Учебники

Apache Presto — Краткое руководство

Apache Presto — Обзор

Аналитика данных — это процесс анализа необработанных данных для сбора соответствующей информации для более эффективного принятия решений. Он в основном используется во многих организациях для принятия деловых решений. Что ж, анализ больших данных включает в себя большое количество данных, и этот процесс довольно сложный, поэтому компании используют разные стратегии.

Например, Facebook является одной из ведущих компаний по управлению данными и крупнейшим хранилищем данных в мире. Данные хранилища Facebook хранятся в Hadoop для крупномасштабных вычислений. Позже, когда объем хранилища данных вырос до петабайт, они решили разработать новую систему с низкой задержкой. В 2012 году члены команды Facebook разработали «Presto» для интерактивной аналитики запросов, которая бы работала быстро даже с петабайтами данных.

Что такое Apache Presto?

Apache Presto — это механизм выполнения распределенных параллельных запросов, оптимизированный для малой задержки и интерактивного анализа запросов. Presto легко выполняет запросы и масштабируется без простоев даже от гигабайтов до петабайтов.

Один запрос Presto может обрабатывать данные из нескольких источников, таких как HDFS, MySQL, Cassandra, Hive и многих других источников данных. Presto построен на Java и легко интегрируется с другими компонентами инфраструктуры данных. Presto является мощным, и его внедряют ведущие компании, такие как Airbnb, DropBox, Groupon, Netflix.

Presto — Особенности

Presto содержит следующие функции —

  • Простая и расширяемая архитектура.
  • Съемные соединители — Presto поддерживает съемные соединители для предоставления метаданных и данных для запросов.
  • Конвейерное выполнение — позволяет избежать ненужных задержек ввода / вывода.
  • Пользовательские функции. Аналитики могут создавать пользовательские пользовательские функции для удобной миграции.
  • Векторизованная колоночная обработка.

Presto — Преимущества

Вот список преимуществ, которые предлагает Apache Presto —

  • Специализированные SQL-операции
  • Простота установки и отладки
  • Простая абстракция для хранения
  • Быстро масштабирует петабайтные данные с низкой задержкой

Presto — Приложения

Presto поддерживает большинство современных промышленных приложений. Давайте посмотрим на некоторые известные приложения.

  • Facebook — Facebook построил Presto для нужд анализа данных. Presto легко масштабирует большую скорость данных.

  • Teradata — Teradata предоставляет комплексные решения для аналитики больших данных и хранилищ данных. Вклад Teradata в Presto позволяет большему количеству компаний выполнять все аналитические задачи.

  • Airbnb — Presto является неотъемлемой частью инфраструктуры данных Airbnb. Что ж, сотни сотрудников ежедневно выполняют запросы с помощью этой технологии.

Facebook — Facebook построил Presto для нужд анализа данных. Presto легко масштабирует большую скорость данных.

Teradata — Teradata предоставляет комплексные решения для аналитики больших данных и хранилищ данных. Вклад Teradata в Presto позволяет большему количеству компаний выполнять все аналитические задачи.

Airbnb — Presto является неотъемлемой частью инфраструктуры данных Airbnb. Что ж, сотни сотрудников ежедневно выполняют запросы с помощью этой технологии.

Почему Престо?

Presto поддерживает стандарт ANSI SQL, что делает его очень простым для аналитиков данных и разработчиков. Хотя он построен на Java, он избегает типичных проблем Java-кода, связанных с выделением памяти и сборкой мусора. Presto имеет архитектуру коннекторов, дружественную Hadoop. Это позволяет легко подключать файловые системы.

Presto работает на нескольких дистрибутивах Hadoop. Кроме того, Presto может обращаться к платформе Hadoop для запроса Cassandra, реляционных баз данных или других хранилищ данных. Эта межплатформенная аналитическая возможность позволяет пользователям Presto извлекать максимальную ценность для бизнеса из гигабайтов в петабайты данных.

Apache Presto — Архитектура

Архитектура Presto почти аналогична классической архитектуре СУБД MPP (массивно-параллельная обработка). Следующая диаграмма иллюстрирует архитектуру Presto.

Престо Архитектура

Приведенная выше диаграмма состоит из разных компонентов. Следующая таблица подробно описывает каждый компонент.

S.No Компонент и описание
1.

клиент

Клиент (Presto CLI) отправляет операторы SQL координатору для получения результата.

2.

координатор

Координатор — мастер-демон. Координатор сначала анализирует запросы SQL, а затем анализирует и планирует выполнение запроса. Планировщик выполняет конвейерное выполнение, назначает работу ближайшему узлу и контролирует ход выполнения.

3.

соединитель

Плагины для хранения называются коннекторами. Hive, HBase, MySQL, Cassandra и многие другие выступают в качестве соединителя; в противном случае вы также можете реализовать пользовательский. Соединитель предоставляет метаданные и данные для запросов. Координатор использует соединитель для получения метаданных для построения плана запроса.

4.

работник

Координатор назначает задачу рабочим узлам. Рабочие получают фактические данные от соединителя. Наконец, рабочий узел доставляет результат клиенту.

клиент

Клиент (Presto CLI) отправляет операторы SQL координатору для получения результата.

координатор

Координатор — мастер-демон. Координатор сначала анализирует запросы SQL, а затем анализирует и планирует выполнение запроса. Планировщик выполняет конвейерное выполнение, назначает работу ближайшему узлу и контролирует ход выполнения.

соединитель

Плагины для хранения называются коннекторами. Hive, HBase, MySQL, Cassandra и многие другие выступают в качестве соединителя; в противном случае вы также можете реализовать пользовательский. Соединитель предоставляет метаданные и данные для запросов. Координатор использует соединитель для получения метаданных для построения плана запроса.

работник

Координатор назначает задачу рабочим узлам. Рабочие получают фактические данные от соединителя. Наконец, рабочий узел доставляет результат клиенту.

Presto — рабочий процесс

Presto — это распределенная система, которая работает на кластере узлов. Механизм распределенных запросов Presto оптимизирован для интерактивного анализа и поддерживает стандарт ANSI SQL, включая сложные запросы, агрегации, объединения и оконные функции. Архитектура Presto проста и расширяема. Клиент Presto (CLI) отправляет операторы SQL координатору главного демона.

Планировщик подключается через конвейер выполнения. Планировщик назначает работу узлам, ближайшим к данным, и отслеживает ход выполнения. Координатор назначает задачу нескольким рабочим узлам, и, наконец, рабочий узел доставляет результат обратно клиенту. Клиент извлекает данные из процесса вывода. Расширяемость является ключевым дизайном. Сменные соединители, такие как Hive, HBase, MySQL и т. Д., Предоставляют метаданные и данные для запросов. Presto был разработан с «простой абстракцией хранилища», которая упрощает предоставление возможности SQL-запросов к этим различным типам источников данных.

Модель исполнения

Presto поддерживает пользовательский механизм запросов и выполнения с операторами, разработанными для поддержки семантики SQL. В дополнение к улучшенному планированию вся обработка выполняется в памяти и передается по сети между различными этапами. Это позволяет избежать ненужных издержек ввода-вывода.

Apache Presto — Установка

В этой главе объясняется, как установить Presto на ваш компьютер. Давайте пройдемся по основным требованиям Presto,

  • Linux или Mac OS
  • Java версия 8

Теперь давайте продолжим следующие шаги для установки Presto на ваш компьютер.

Проверка установки Java

Надеюсь, вы уже установили Java версии 8 на своем компьютере прямо сейчас, поэтому вы просто подтвердите это с помощью следующей команды.

$ java -version 

Если Java успешно установлена ​​на вашем компьютере, вы можете увидеть версию установленной Java. Если Java не установлена, выполните следующие шаги, чтобы установить Java 8 на свой компьютер.

Скачать JDK. Загрузите последнюю версию JDK, перейдя по следующей ссылке.

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Последняя версия — JDK 8u 92, а файл — «jdk-8u92-linux-x64.tar.gz». Пожалуйста, загрузите файл на свой компьютер.

После этого распакуйте файлы и перейдите в определенный каталог.

Затем установите альтернативы Java. Наконец Java будет установлен на вашем компьютере.

Установка Apache Presto

Загрузите последнюю версию Presto, перейдя по следующей ссылке,

https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.149/

Теперь последняя версия «presto-server-0.149.tar.gz» будет загружена на ваш компьютер.

Извлечь файлы tar

Извлеките файл tar, используя следующую команду —

$ tar  -zxf  presto-server-0.149.tar.gz 
$ cd presto-server-0.149 

Настройки конфигурации

Создать каталог данных

Создайте каталог данных вне каталога установки, который будет использоваться для хранения журналов, метаданных и т. Д., Чтобы его было легко сохранить при обновлении Presto. Это определяется с помощью следующего кода —

$ cd  
$ mkdir data

Чтобы просмотреть путь, по которому он расположен, используйте команду «pwd». Это местоположение будет назначено в следующем файле node.properties.

Создать каталог «etc»

Создайте каталог etc внутри установочного каталога Presto, используя следующий код —

$ cd presto-server-0.149 
$ mkdir etc

Этот каталог будет содержать файлы конфигурации. Давайте создадим каждый файл один за другим.

Свойства узла

Файл свойств узла Presto содержит конфигурацию среды, специфичную для каждого узла. Он создается внутри каталога etc (etc / node.properties) с использованием следующего кода —

$ cd etc 
$ vi node.properties  

node.environment = production 
node.id = ffffffff-ffff-ffff-ffff-ffffffffffff 
node.data-dir = /Users/../workspace/Presto

После внесения всех изменений сохраните файл и выйдите из терминала. Здесь node.data — это путь к указанному выше каталогу данных. node.id представляет уникальный идентификатор для каждого узла.

JVM Config

Создайте файл «jvm.config» в каталоге etc (etc / jvm.config). Этот файл содержит список параметров командной строки, используемых для запуска виртуальной машины Java.

$ cd etc 
$ vi jvm.config  

-server 
-Xmx16G 
-XX:+UseG1GC 
-XX:G1HeapRegionSize = 32M 
-XX:+UseGCOverheadLimit 
-XX:+ExplicitGCInvokesConcurrent 
-XX:+HeapDumpOnOutOfMemoryError 
-XX:OnOutOfMemoryError = kill -9 %p 

После внесения всех изменений сохраните файл и выйдите из терминала.

Свойства конфигурации

Создайте файл «config.properties» внутри каталога etc (etc / config.properties). Этот файл содержит конфигурацию сервера Presto. Если вы настраиваете один компьютер для тестирования, сервер Presto может функционировать только как процесс координации, как определено с помощью следующего кода:

$ cd etc 
$ vi config.properties  

coordinator = true 
node-scheduler.include-coordinator = true 
http-server.http.port = 8080 
query.max-memory = 5GB 
query.max-memory-per-node = 1GB 
discovery-server.enabled = true 
discovery.uri = http://localhost:8080

Вот,

  • координатор — главный узел.

  • node-scheduler.include-координатор — позволяет планировать работу на координаторе.

  • http-server.http.port — указывает порт для HTTP-сервера.

  • query.max-memory = 5GB — максимальный объем распределенной памяти.

  • query.max-memory-per-node = 1GB — максимальный объем памяти на узел.

  • discovery-server.enabled — Presto использует службу Discovery для поиска всех узлов в кластере.

  • discovery.uri — URI для сервера Discovery.

координатор — главный узел.

node-scheduler.include-координатор — позволяет планировать работу на координаторе.

http-server.http.port — указывает порт для HTTP-сервера.

query.max-memory = 5GB — максимальный объем распределенной памяти.

query.max-memory-per-node = 1GB — максимальный объем памяти на узел.

discovery-server.enabled — Presto использует службу Discovery для поиска всех узлов в кластере.

discovery.uri — URI для сервера Discovery.

Если вы настраиваете Presto-сервер с несколькими машинами, Presto будет выполнять функции как координации, так и рабочего процесса. Используйте этот параметр конфигурации для тестирования сервера Presto на нескольких компьютерах.

Конфигурация для координатора

$ cd etc 
$ vi config.properties  

coordinator = true 
node-scheduler.include-coordinator = false 
http-server.http.port = 8080 
query.max-memory = 50GB 
query.max-memory-per-node = 1GB 
discovery-server.enabled = true 
discovery.uri = http://localhost:8080 

Конфигурация для работника

$ cd etc 
$ vi config.properties  

coordinator = false 
http-server.http.port = 8080 
query.max-memory = 50GB 
query.max-memory-per-node = 1GB 
discovery.uri = http://localhost:8080

Свойства журнала

Создайте файл «log.properties» внутри каталога etc (etc / log.properties). Этот файл содержит минимальный уровень журнала для именованных иерархий регистратора. Это определяется с помощью следующего кода —

$ cd etc 
$ vi log.properties  
com.facebook.presto = INFO

Сохраните файл и выйдите из терминала. Здесь используются четыре уровня регистрации, такие как DEBUG, INFO, WARN и ERROR. Уровень журнала по умолчанию — INFO.

Свойства каталога

Создайте каталог «каталог» внутри каталога etc (etc / catalog). Это будет использоваться для монтажа данных. Например, создайте файл etc / catalog / jmx.properties со следующим содержимым, чтобы подключить соединитель jmx в качестве каталога jmx —

$ cd etc 
$ mkdir catalog 
$ cd catalog 
$ vi jmx.properties  
connector.name = jmx 

Начать Престо

Presto можно запустить с помощью следующей команды:

$ bin/launcher start 

Тогда вы увидите ответ, похожий на этот,

Started as 840

Run Presto

Чтобы запустить сервер Presto, используйте следующую команду —

$ bin/launcher run

После успешного запуска сервера Presto вы можете найти файлы журналов в каталоге «var / log».

  • launcher.log — этот журнал создается модулем запуска и подключается к потокам stdout и stderr сервера.

  • server.log — это основной файл журнала, используемый Presto.

  • http-request.log — HTTP-запрос, полученный сервером.

launcher.log — этот журнал создается модулем запуска и подключается к потокам stdout и stderr сервера.

server.log — это основной файл журнала, используемый Presto.

http-request.log — HTTP-запрос, полученный сервером.

На данный момент вы успешно установили параметры конфигурации Presto на своем компьютере. Давайте продолжим шаги по установке Presto CLI.

Установите Presto CLI

Интерфейс Presto CLI предоставляет интерактивную оболочку на основе терминала для выполнения запросов.

Загрузите интерфейс Presto CLI, перейдя по следующей ссылке:

https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.149/

Теперь «presto-cli-0.149-executetable.jar» будет установлен на вашем компьютере.

Запустить CLI

После загрузки Presto-Cli скопируйте его в папку, из которой вы хотите запустить. Это местоположение может быть любым узлом, который имеет сетевой доступ к координатору. Сначала измените имя файла Jar на Presto. Затем сделайте его исполняемым с помощью команды chmod + x, используя следующий код —

$ mv presto-cli-0.149-executable.jar presto  
$ chmod +x presto

Теперь выполните CLI, используя следующую команду,

./presto --server localhost:8080 --catalog jmx --schema default  
Here jmx(Java Management Extension) refers to catalog and default referes to schema. 

Вы увидите следующий ответ,

 presto:default>

Теперь введите на своем терминале команду «jps», и вы увидите запущенные демоны.

Стоп Престо

Выполнив все исполнения, вы можете остановить сервер Presto, используя следующую команду:

$ bin/launcher stop 

Apache Presto — Настройки конфигурации

В этой главе будут обсуждаться параметры конфигурации Presto.

Presto Verifier

Верификатор Presto можно использовать для тестирования Presto в отношении другой базы данных (например, MySQL) или для проверки двух кластеров Presto друг против друга.

Создать базу данных в MySQL

Откройте сервер MySQL и создайте базу данных, используя следующую команду.

create database test 

Теперь вы создали «тестовую» базу данных на сервере. Создайте таблицу и загрузите ее с помощью следующего запроса.

CREATE TABLE verifier_queries( 
   id INT NOT NULL AUTO_INCREMENT, 
   suite VARCHAR(256) NOT NULL, 
   name VARCHAR(256), 
   test_catalog VARCHAR(256) NOT NULL, 
   test_schema VARCHAR(256) NOT NULL, 
   test_prequeries TEXT, 
   test_query TEXT NOT NULL, 
   test_postqueries TEXT, 
   test_username VARCHAR(256) NOT NULL default 'verifier-test', 
   test_password VARCHAR(256), 
   control_catalog VARCHAR(256) NOT NULL, 
   control_schema VARCHAR(256) NOT NULL, 
   control_prequeries TEXT, 
   control_query TEXT NOT NULL, 
   control_postqueries TEXT, 
   control_username VARCHAR(256) NOT NULL default 'verifier-test', 
   control_password VARCHAR(256), 
   session_properties_json TEXT,            
   PRIMARY KEY (id) 
);

Добавить настройки конфигурации

Создайте файл свойств для настройки верификатора —

$ vi config.properties  

suite = mysuite 
query-database = jdbc:mysql://localhost:3306/tutorials?user=root&password=pwd 
control.gateway = jdbc:presto://localhost:8080 
test.gateway = jdbc:presto://localhost:8080 
thread-count = 1 

Здесь, в поле базы данных запросов , введите следующие данные — имя базы данных mysql, имя пользователя и пароль.

Скачать файл JAR

Загрузите файл JAR Presto-Verifier, перейдя по следующей ссылке:

https://repo1.maven.org/maven2/com/facebook/presto/presto-verifier/0.149/

Теперь версия «presto-verifyier-0.149-executetable.jar» загружена на ваш компьютер.

Выполнить JAR

Выполните файл JAR, используя следующую команду:

$ mv presto-verifier-0.149-executable.jar verifier  
$ chmod+x verifier 

Run Verifier

Запустите верификатор, используя следующую команду:

$ ./verifier config.properties 

Создать таблицу

Давайте создадим простую таблицу в «тестовой» базе данных, используя следующий запрос.

create table product(id int not null, name varchar(50))

Вставить таблицу

После создания таблицы вставьте две записи, используя следующий запрос:

insert into product values(1,’Phone') 
insert into product values(2,’Television’)

Запустить проверку Verifier

Выполните следующий пример запроса в терминале верификатора (./verifier config.propeties), чтобы проверить результат верификатора.

Образец запроса

insert into verifier_queries (suite, test_catalog, test_schema, test_query, 
control_catalog, control_schema, control_query) values 
('mysuite', 'mysql', 'default', 'select * from mysql.test.product', 
'mysql', 'default', 'select * from mysql.test.product');

Здесь select * from mysql.test.product запрос относится к каталогу mysql, test — это имя базы данных, product — имя таблицы. Таким образом, вы можете получить доступ к соединителю mysql с помощью сервера Presto.

Здесь два одинаковых запроса на выборку сравниваются друг с другом, чтобы увидеть производительность. Точно так же вы можете запустить другие запросы, чтобы проверить результаты производительности. Вы также можете подключить два кластера Presto, чтобы проверить результаты производительности.

Apache Presto — Инструменты администрирования

В этой главе мы обсудим инструменты администрирования, используемые в Presto. Начнем с веб-интерфейса Presto.

Веб интерфейс

Presto предоставляет веб-интерфейс для мониторинга и управления запросами. Доступ к нему можно получить по номеру порта, указанному в свойствах конфигурации координатора.

Запустите Presto-сервер и Presto CLI. Затем вы можете получить доступ к веб-интерфейсу по следующему адресу — http: // localhost: 8080 /

Веб интерфейс

Вывод будет аналогичен приведенному выше экрану.

Здесь на главной странице есть список запросов, а также такая информация, как уникальный идентификатор запроса, текст запроса, состояние запроса, процент выполненных запросов, имя пользователя и источник, из которого был получен этот запрос. Сначала выполняются последние запросы, затем внизу отображаются выполненные или не завершенные запросы.

Настройка выступления на Presto

Если в кластере Presto возникают проблемы с производительностью, измените параметры конфигурации по умолчанию на следующие параметры.

Свойства конфигурации

  • задача. info -refresh-max-wait — уменьшает нагрузку на координатора.

  • task.max-worker-threads — разбивает процесс и присваивает каждому рабочему узлу.

  • распределенные объединения включены — распределенные объединения на основе хеша.

  • node-scheduler.network-topology — устанавливает топологию сети для планировщика.

задача. info -refresh-max-wait — уменьшает нагрузку на координатора.

task.max-worker-threads — разбивает процесс и присваивает каждому рабочему узлу.

распределенные объединения включены — распределенные объединения на основе хеша.

node-scheduler.network-topology — устанавливает топологию сети для планировщика.

Настройки JVM

Измените настройки JVM по умолчанию на следующие настройки. Это будет полезно для диагностики проблем со сборкой мусора.

-XX:+PrintGCApplicationConcurrentTime 
-XX:+PrintGCApplicationStoppedTime 
-XX:+PrintGCCause 
-XX:+PrintGCDateStamps 
-XX:+PrintGCTimeStamps 
-XX:+PrintGCDetails 
-XX:+PrintReferenceGC 
-XX:+PrintClassHistogramAfterFullGC 
-XX:+PrintClassHistogramBeforeFullGC 
-XX:PrintFLSStatistics = 2 
-XX:+PrintAdaptiveSizePolicy 
-XX:+PrintSafepointStatistics 
-XX:PrintSafepointStatisticsCount = 1 

Apache Presto — Основные операции SQL

В этой главе мы обсудим, как создавать и выполнять запросы в Presto. Давайте рассмотрим основные типы данных, поддерживаемые Presto.

Основные типы данных

В следующей таблице описаны основные типы данных Presto.

S.No Тип данных и описание
1.

VARCHAR

Символьные данные переменной длины

2.

BIGINT

64-разрядное целое число со знаком

3.

DOUBLE

64-битное значение двойной точности с плавающей запятой

4.

ДЕСЯТИЧНЫЙ

Десятичное число с фиксированной точностью. Например, DECIMAL (10,3) — 10 — это точность, т. Е. Общее количество цифр, а 3 — значение шкалы, представленное в виде дробной точки. Масштаб не является обязательным и значение по умолчанию 0

5.

БУЛЕВЫ

Булевы значения true и false

6.

VARBINARY

Двоичные данные переменной длины

7.

JSON

Данные JSON

8.

ДАТА

Тип данных даты представлен как год-месяц-день

9.

ВРЕМЯ, TIMESTAMP, TIMESTAMP с зоной времени

ВРЕМЯ — Время дня (час-минуты-секунды-миллисекунды)

TIMESTAMP — дата и время дня

TIMESTAMP with TIME ZONE — Дата и время дня с часовым поясом от значения

10.

ИНТЕРВАЛ

Растянуть или расширить типы данных даты и времени

11.

ARRAY

Массив данного типа компонента. Например, ARRAY [5,7]

12.

КАРТА

Карта между заданными типами компонентов. Например, MAP (ARRAY [‘one’, ‘two’], ARRAY [5,7])

13.

СТРОКА

Структура строк, состоящая из именованных полей

VARCHAR

Символьные данные переменной длины

BIGINT

64-разрядное целое число со знаком

DOUBLE

64-битное значение двойной точности с плавающей запятой

ДЕСЯТИЧНЫЙ

Десятичное число с фиксированной точностью. Например, DECIMAL (10,3) — 10 — это точность, т. Е. Общее количество цифр, а 3 — значение шкалы, представленное в виде дробной точки. Масштаб не является обязательным и значение по умолчанию 0

БУЛЕВЫ

Булевы значения true и false

VARBINARY

Двоичные данные переменной длины

JSON

Данные JSON

ДАТА

Тип данных даты представлен как год-месяц-день

ВРЕМЯ, TIMESTAMP, TIMESTAMP с зоной времени

ВРЕМЯ — Время дня (час-минуты-секунды-миллисекунды)

TIMESTAMP — дата и время дня

TIMESTAMP with TIME ZONE — Дата и время дня с часовым поясом от значения

ИНТЕРВАЛ

Растянуть или расширить типы данных даты и времени

ARRAY

Массив данного типа компонента. Например, ARRAY [5,7]

КАРТА

Карта между заданными типами компонентов. Например, MAP (ARRAY [‘one’, ‘two’], ARRAY [5,7])

СТРОКА

Структура строк, состоящая из именованных полей

Престо — Операторы

Операторы Presto перечислены в следующей таблице.

S.No Оператор и описание
1. Арифметический оператор

Presto поддерживает арифметические операторы, такие как +, -, *, /,%

2. Оператор связи

<,>, <=,> =, =, <>

3. Логический оператор

И, ИЛИ НЕ

4. Оператор дальности

Оператор диапазона используется для проверки значения в определенном диапазоне. Presto поддерживает МЕЖДУ, НУЛЕВОЙ, НЕ НУЛЕВОЙ, БОЛЬШОЙ И НАИМЕНЕЕМОЙ

5. Десятичный оператор

Бинарный арифметический десятичный оператор выполняет двоичную арифметическую операцию для десятичного типа Унарный десятичный оператор — Оператор — выполняет отрицание

6. Строковый оператор

‘||’ оператор выполняет конкатенацию строк

7. Оператор даты и времени

Выполняет арифметические операции сложения и вычитания для типов данных даты и времени

8. Оператор массива

Оператор нижнего индекса [] — доступ к элементу массива

Оператор конкатенации || — объединить массив с массивом или элементом того же типа

9. Оператор карты

Оператор индекса карты [] — получить значение, соответствующее данному ключу, из карты.

Presto поддерживает арифметические операторы, такие как +, -, *, /,%

<,>, <=,> =, =, <>

И, ИЛИ НЕ

Оператор диапазона используется для проверки значения в определенном диапазоне. Presto поддерживает МЕЖДУ, НУЛЕВОЙ, НЕ НУЛЕВОЙ, БОЛЬШОЙ И НАИМЕНЕЕМОЙ

Бинарный арифметический десятичный оператор выполняет двоичную арифметическую операцию для десятичного типа Унарный десятичный оператор — Оператор — выполняет отрицание

‘||’ оператор выполняет конкатенацию строк

Выполняет арифметические операции сложения и вычитания для типов данных даты и времени

Оператор нижнего индекса [] — доступ к элементу массива

Оператор конкатенации || — объединить массив с массивом или элементом того же типа

Оператор индекса карты [] — получить значение, соответствующее данному ключу, из карты.

Apache Presto — Функции SQL

На данный момент мы обсуждали выполнение простых простых запросов на Presto. В этой главе будут обсуждаться важные функции SQL.

Математические функции

Математические функции работают с математическими формулами. Следующая таблица подробно описывает список функций.

S.No. Описание функции
1. абс (х)

Возвращает абсолютное значение х

2. cbrt (х)

Возвращает кубический корень из x

3. потолок (х)

Возвращает значение x, округленное до ближайшего целого

4.

CEIL (х)

Псевдоним для потолка (х)

5. градусов (х)

Возвращает значение степени для х

6. е (х)

Возвращает двойное значение для числа Эйлера

7.

ехр (х)

Возвращает значение экспоненты для числа Эйлера

8. пол (х)

Возвращает x, округленное до ближайшего целого числа

9.

from_base (строка, Radix)

Возвращает значение строки, интерпретируемой как число с основанием

10.

п (х)

Возвращает натуральный логарифм х

11. log2 (х)

Возвращает основание 2 логарифм х

12.

log10 (х)

Возвращает основание 10 логарифм х

13.

войти (х, у)

Возвращает основание у логарифм х

14. мод (п, т)

Возвращает модуль (остаток) от n, деленный на m

15.

число Пи()

Возвращает значение пи. Результат будет возвращен как двойное значение

16. мощность (х, р)

Возвращает степень значения p в значение x

17.

пау (х, р)

Псевдоним для власти (х, р)

18. радиан (х)

преобразует угол х в градусах радиан

19.

Rand ()

Псевдоним для радианов ()

20. случайным образом ()

Возвращает псевдослучайное значение

21.

Rand (п)

Псевдоним для случайных ()

22. круглые (х)

Возвращает округленное значение для х

23.

Круглый (х, г)

Значение x, округленное для десятичных разрядов

24.

знак (х)

Возвращает функцию signum для x, т. Е.

0, если аргумент равен 0

1, если аргумент больше 0

-1 если аргумент меньше 0

Для двойных аргументов функция дополнительно возвращает —

NaN, если аргумент равен NaN

1, если аргумент равен + Бесконечность

-1 если аргумент равен -Infinity

25. SQRT (х)

Возвращает квадратный корень из х

26. to_base (х, Radix)

Тип возврата — лучник. Результат возвращается как основа для x

27. усечение (х)

Усекает значение для х

28. width_bucket (x, bound1, bound2, n)

Возвращает номер бина из x указанных границ bound1 и bound2 и n количества блоков

29. width_bucket (x, мусорные ведра)

Возвращает номер ячейки x в соответствии с ячейками, указанными в ячейках массива

Возвращает абсолютное значение х

Возвращает кубический корень из x

Возвращает значение x, округленное до ближайшего целого

CEIL (х)

Псевдоним для потолка (х)

Возвращает значение степени для х

Возвращает двойное значение для числа Эйлера

ехр (х)

Возвращает значение экспоненты для числа Эйлера

Возвращает x, округленное до ближайшего целого числа

from_base (строка, Radix)

Возвращает значение строки, интерпретируемой как число с основанием

п (х)

Возвращает натуральный логарифм х

Возвращает основание 2 логарифм х

log10 (х)

Возвращает основание 10 логарифм х

войти (х, у)

Возвращает основание у логарифм х

Возвращает модуль (остаток) от n, деленный на m

число Пи()

Возвращает значение пи. Результат будет возвращен как двойное значение

Возвращает степень значения p в значение x

пау (х, р)

Псевдоним для власти (х, р)

преобразует угол х в градусах радиан

Rand ()

Псевдоним для радианов ()

Возвращает псевдослучайное значение

Rand (п)

Псевдоним для случайных ()

Возвращает округленное значение для х

Круглый (х, г)

Значение x, округленное для десятичных разрядов

знак (х)

Возвращает функцию signum для x, т. Е.

0, если аргумент равен 0

1, если аргумент больше 0

-1 если аргумент меньше 0

Для двойных аргументов функция дополнительно возвращает —

NaN, если аргумент равен NaN

1, если аргумент равен + Бесконечность

-1 если аргумент равен -Infinity

Возвращает квадратный корень из х

Тип возврата — лучник. Результат возвращается как основа для x

Усекает значение для х

Возвращает номер бина из x указанных границ bound1 и bound2 и n количества блоков

Возвращает номер ячейки x в соответствии с ячейками, указанными в ячейках массива

Тригонометрические функции

Аргументы тригонометрических функций представлены в радианах (). В следующей таблице перечислены функции.

S.No Функции и описание
1. экоса (х)

Возвращает значение обратного косинуса (х)

2.

ASIN (х)

Возвращает значение обратного синуса (х)

3.

Atan (х)

Возвращает значение обратной касательной (х)

4. atan2 (у, х)

Возвращает значение обратной касательной (y / x)

5.

сов (х)

Возвращает значение косинуса (х)

6. сп (х)

Возвращает значение гиперболического косинуса (х)

7. грех (х)

Возвращает значение синуса (х)

8.

тангенс (х)

Возвращает значение тангенса (x)

9.

TANH (х)

Возвращает значение гиперболического тангенса (x)

Возвращает значение обратного косинуса (х)

ASIN (х)

Возвращает значение обратного синуса (х)

Atan (х)

Возвращает значение обратной касательной (х)

Возвращает значение обратной касательной (y / x)

сов (х)

Возвращает значение косинуса (х)

Возвращает значение гиперболического косинуса (х)

Возвращает значение синуса (х)

тангенс (х)

Возвращает значение тангенса (x)

TANH (х)

Возвращает значение гиперболического тангенса (x)

Битовые функции

В следующей таблице перечислены побитовые функции.

S.No Функции и описание
1. bit_count (x, биты)

Подсчитать количество бит

2. bitwise_and (х, у)

Выполнить побитовую операцию И для двух битов, х и у

3. bitwise_or (х, у)

Побитовая операция ИЛИ между двумя битами x, y

4. bitwise_not (х)

Побитовая операция не для бита x

5. bitwise_xor (х, у)

Операция XOR для битов x, y

Подсчитать количество бит

Выполнить побитовую операцию И для двух битов, х и у

Побитовая операция ИЛИ между двумя битами x, y

Побитовая операция не для бита x

Операция XOR для битов x, y

Строковые функции

В следующей таблице перечислены функции String.

S.No Функции и описание
1. concat (string1, …, stringN)

Объединить данные строки

2. Длина (строка)

Возвращает длину данной строки

3. ниже (строка)

Возвращает строчный формат для строки

4. верхняя (строка)

Возвращает формат в верхнем регистре для данной строки

5. lpad (строка, размер, полоска)

Левый отступ для заданной строки

6. LTRIM (строка)

Удаляет начальные пробелы из строки

7. заменить (строка, поиск, замена)

Заменяет строковое значение

8. задний ход (строка)

Отменяет операцию, выполненную для строки

9. rpad (строка, размер, полоска)

Правый отступ для заданной строки

10. RTRIM (строка)

Удаляет завершающий пробел из строки

11. разделить (строка, разделитель)

Разбивает строку на разделитель и возвращает массив размером не более

12. split_part (строка, разделитель, индекс)

Разбивает строку на разделитель и возвращает индекс поля

13. strpos (строка, подстрока)

Возвращает начальную позицию подстроки в строке

14. substr (строка, начало)

Возвращает подстроку для данной строки

15. substr (строка, начало, длина)

Возвращает подстроку для заданной строки с определенной длиной

16. подрезать (строка)

Удаляет начальные и конечные пробелы из строки

Объединить данные строки

Возвращает длину данной строки

Возвращает строчный формат для строки

Возвращает формат в верхнем регистре для данной строки

Левый отступ для заданной строки

Удаляет начальные пробелы из строки

Заменяет строковое значение

Отменяет операцию, выполненную для строки

Правый отступ для заданной строки

Удаляет завершающий пробел из строки

Разбивает строку на разделитель и возвращает массив размером не более

Разбивает строку на разделитель и возвращает индекс поля

Возвращает начальную позицию подстроки в строке

Возвращает подстроку для данной строки

Возвращает подстроку для заданной строки с определенной длиной

Удаляет начальные и конечные пробелы из строки

Функции даты и времени

В следующей таблице перечислены функции даты и времени.

S.No Функции и описание
1. текущая дата

Возвращает текущую дату

2. Текущее время

Возвращает текущее время

3. current_timestamp

Возвращает текущую метку времени

4. current_timezone ()

Возвращает текущий часовой пояс

5. сейчас()

Возвращает текущую дату, метку времени с часовым поясом

6. местное время

Возвращает местное время

7. localtimestamp

Возвращает местное время

Возвращает текущую дату

Возвращает текущее время

Возвращает текущую метку времени

Возвращает текущий часовой пояс

Возвращает текущую дату, метку времени с часовым поясом

Возвращает местное время

Возвращает местное время

Функции регулярных выражений

В следующей таблице перечислены функции регулярных выражений.

S.No Функции и описание
1. regexp_extract_all (строка, шаблон)

Возвращает строку, совпадающую с регулярным выражением для шаблона

2. regexp_extract_all (строка, шаблон, группа)

Возвращает строку, совпадающую с регулярным выражением для шаблона и группы

3. regexp_extract (строка, шаблон)

Возвращает первую подстроку, совпадающую с регулярным выражением для шаблона

4. regexp_extract (строка, шаблон, группа)

Возвращает первую подстроку, совпадающую с регулярным выражением для шаблона и группы

5. regexp_like (строка, шаблон)

Возвращает совпадения строки для шаблона. Если строка возвращается, значение будет истинным, иначе ложным

6. regexp_replace (строка, шаблон)

Заменяет экземпляр строки, сопоставленной для выражения, с шаблоном

7. regexp_replace (строка, шаблон, замена)

Замените экземпляр строки, совпадающей для выражения, с шаблоном и заменой.

8. regexp_split (строка, шаблон)

Разбивает регулярное выражение для данного шаблона

Возвращает строку, совпадающую с регулярным выражением для шаблона

Возвращает строку, совпадающую с регулярным выражением для шаблона и группы

Возвращает первую подстроку, совпадающую с регулярным выражением для шаблона

Возвращает первую подстроку, совпадающую с регулярным выражением для шаблона и группы

Возвращает совпадения строки для шаблона. Если строка возвращается, значение будет истинным, иначе ложным

Заменяет экземпляр строки, сопоставленной для выражения, с шаблоном

Замените экземпляр строки, совпадающей для выражения, с шаблоном и заменой.

Разбивает регулярное выражение для данного шаблона

Функции JSON

В следующей таблице перечислены функции JSON.

S.No Функции и описание
1. json_array_contains (json, значение)

Проверьте, существует ли значение в массиве json. Если значение существует, оно вернет true, иначе false

2. json_array_get (json_array, index)

Получить элемент для индекса в массиве json

3. json_array_length (JSON)

Возвращает длину в массиве json

4. json_format (JSON)

Возвращает формат структуры json

5. json_parse (строка)

Разбирает строку как json

6. json_size (json, json_path)

Возвращает размер значения

Проверьте, существует ли значение в массиве json. Если значение существует, оно вернет true, иначе false

Получить элемент для индекса в массиве json

Возвращает длину в массиве json

Возвращает формат структуры json

Разбирает строку как json

Возвращает размер значения

Функции URL

В следующей таблице перечислены функции URL.

S.No Функции и описание
1. url_extract_host (URL)

Возвращает хост URL

2. url_extract_path (URL)

Возвращает путь URL

3. url_extract_port (URL)

Возвращает порт URL

4. url_extract_protocol (URL)

Возвращает протокол URL

5. url_extract_query (URL)

Возвращает строку запроса URL

Возвращает хост URL

Возвращает путь URL

Возвращает порт URL

Возвращает протокол URL

Возвращает строку запроса URL

Агрегатные функции

В следующей таблице перечислены агрегатные функции.

S.No Функции и описание
1.

ср (х)

Возвращает среднее значение для данного значения

2. мин (х, п)

Возвращает минимальное значение из двух значений

3. макс (х, п)

Возвращает максимальное значение из двух значений

4. сумма (х)

Возвращает сумму стоимости

5. кол(*)

Возвращает количество входных строк

6. кол(х)

Возвращает количество входных значений

7. контрольная сумма (х)

Возвращает контрольную сумму для х

8. произвольное (х)

Возвращает произвольное значение для х

ср (х)

Возвращает среднее значение для данного значения

Возвращает минимальное значение из двух значений

Возвращает максимальное значение из двух значений

Возвращает сумму стоимости

Возвращает количество входных строк

Возвращает количество входных значений

Возвращает контрольную сумму для х

Возвращает произвольное значение для х

Цветовые функции

В следующей таблице перечислены функции цвета.

S.No Функции и описание
1. полоса (х, ширина)

Отрисовывает один бар, используя rgb low_color и high_color

2. полоса (x, ширина, low_color, high_color)

Отрисовывает одну полосу для указанной ширины

3. цвет (строка)

Возвращает значение цвета для введенной строки

4. визуализация (х, цвет)

Отображает значение x, используя определенный цвет, используя цветовые коды ANSI

5. визуализации (б)

Принимает логическое значение b и отображает зеленый true или красный false, используя цветовые коды ANSI

6.

RGB (красный, зеленый, синий)

Возвращает значение цвета, фиксирующее значение RGB трех значений цвета компонента, представленных в виде параметров int в диапазоне от 0 до 255

Отрисовывает один бар, используя rgb low_color и high_color

Отрисовывает одну полосу для указанной ширины

Возвращает значение цвета для введенной строки

Отображает значение x, используя определенный цвет, используя цветовые коды ANSI

Принимает логическое значение b и отображает зеленый true или красный false, используя цветовые коды ANSI

RGB (красный, зеленый, синий)

Возвращает значение цвета, фиксирующее значение RGB трех значений цвета компонента, представленных в виде параметров int в диапазоне от 0 до 255

Функции массива

В следующей таблице перечислены функции Array.

S.No Функции и описание
1. array_max (х)

Находит максимальный элемент в массиве

2. array_min (х)

Находит элемент min в массиве

3. array_sort (х)

Сортирует элементы в массиве

4. array_remove (х, элемент)

Удаляет определенный элемент из массива

5. CONCAT (х, у)

Объединяет два массива

6. содержит (х, элемент)

Находит заданные элементы в массиве. Значение true будет возвращено, если оно присутствует, в противном случае — false

7. array_position (х, элемент)

Найти позицию данного элемента в массиве

8. array_intersect (х, у)

Выполняет пересечение между двумя массивами

9. element_at (массив, индекс)

Возвращает позицию элемента массива

10. срез (х, начало, длина)

Нарезает элементы массива определенной длины

Находит максимальный элемент в массиве

Находит элемент min в массиве

Сортирует элементы в массиве

Удаляет определенный элемент из массива

Объединяет два массива

Находит заданные элементы в массиве. Значение true будет возвращено, если оно присутствует, в противном случае — false

Найти позицию данного элемента в массиве

Выполняет пересечение между двумя массивами

Возвращает позицию элемента массива

Нарезает элементы массива определенной длины

Функции Teradata

В следующей таблице перечислены функции Teradata.

S.No Функции и описание
1. Индекс (строка, подстрока)

Возвращает индекс строки с заданной подстрокой

2. подстроки (строка, начало)

Возвращает подстроку данной строки. Вы можете указать стартовый индекс здесь

3. подстроки (строка, начало, длина)

Возвращает подстроку данной строки для определенного начального индекса и длины строки

Возвращает индекс строки с заданной подстрокой

Возвращает подстроку данной строки. Вы можете указать стартовый индекс здесь

Возвращает подстроку данной строки для определенного начального индекса и длины строки

Apache Presto — MySQL Connector

Соединитель MySQL используется для запроса внешней базы данных MySQL.

Предпосылки

Установка сервера MySQL.

Настройки конфигурации

Надеюсь, вы установили MySQL сервер на вашем компьютере. Чтобы включить свойства mysql на сервере Presto, необходимо создать файл «mysql.properties» в каталоге «etc / catalog» . Выполните следующую команду, чтобы создать файл mysql.properties.

$ cd etc 
$ cd catalog 
$ vi mysql.properties   

connector.name = mysql 
connection-url = jdbc:mysql://localhost:3306 
connection-user = root 
connection-password = pwd 

Сохраните файл и выйдите из терминала. В приведенном выше файле вы должны ввести свой пароль mysql в поле connection-password.

Создать базу данных в MySQL Server

Откройте сервер MySQL и создайте базу данных, используя следующую команду.

create database tutorials

Теперь вы создали базу данных «учебных пособий» на сервере. Чтобы включить тип базы данных, используйте команду «use tutorials» в окне запроса.

Создать таблицу

Давайте создадим простую таблицу в базе данных «учебники».

create table author(auth_id int not null, auth_name varchar(50),topic varchar(100))

Вставить таблицу

После создания таблицы вставьте три записи, используя следующий запрос.

insert into author values(1,'Doug Cutting','Hadoop') 
insert into author values(2,’James Gosling','java') 
insert into author values(3,'Dennis Ritchie’,'C')

Выберите записи

Чтобы получить все записи, введите следующий запрос.

запрос

select * from author

Результат

auth_id    auth_name      topic  
1        Doug Cutting     Hadoop 
2        James Gosling    java 
3        Dennis Ritchie     C 

На данный момент вы запросили данные, используя сервер MySQL. Давайте подключим плагин хранения Mysql к серверу Presto.

Подключите Presto CLI

Введите следующую команду, чтобы подключить плагин MySql в Presto CLI.

./presto --server localhost:8080 --catalog mysql --schema tutorials 

Вы получите следующий ответ.

presto:tutorials> 

Здесь «учебники» относится к схеме на сервере MySQL.

Список схем

Чтобы вывести список всех схем в MySQL, введите следующий запрос на сервере Presto.

запрос

presto:tutorials> show schemas from mysql;

Результат

      Schema 
-------------------- 
 information_schema 
 performance_schema 
 sys 
 tutorials

Из этого результата мы можем заключить, что первые три схемы предопределены, а последняя — как вы сами создали.

Список таблиц из схемы

Следующий запрос перечисляет все таблицы в схеме учебников.

запрос

presto:tutorials> show tables from mysql.tutorials; 

Результат

  Table 
-------- 
 author

Мы создали только одну таблицу в этой схеме. Если вы создали несколько таблиц, будут перечислены все таблицы.

Опишите таблицу

Чтобы описать поля таблицы, введите следующий запрос.

запрос

presto:tutorials> describe mysql.tutorials.author;

Результат

  Column   |     Type     | Comment 
-----------+--------------+--------- 
 auth_id   | integer      | 
 auth_name | varchar(50)  | 
 topic     | varchar(100) |

Показать столбцы из таблицы

запрос

presto:tutorials> show columns from mysql.tutorials.author; 

Результат

 Column    |     Type     | Comment 
-----------+--------------+--------- 
 auth_id   | integer      | 
 auth_name | varchar(50)  | 
 topic     | varchar(100) |

Доступ к записям таблицы

Чтобы получить все записи из таблицы MySQL, выполните следующий запрос.

запрос

presto:tutorials> select * from mysql.tutorials.author; 

Результат

auth_id  |   auth_name    | topic 
---------+----------------+-------- 
       1 | Doug Cutting   | Hadoop 
       2 | James Gosling  | java 
       3 | Dennis Ritchie | C

Из этого результата вы можете извлечь записи сервера MySQL в Presto.

Создать таблицу, используя в качестве команды

Mysql-коннектор не поддерживает запрос создания таблицы, но вы можете создать таблицу, используя команду as.

запрос

presto:tutorials> create table mysql.tutorials.sample as 
select * from mysql.tutorials.author; 

Результат

CREATE TABLE: 3 rows

Вы не можете вставлять строки напрямую, потому что этот соединитель имеет некоторые ограничения. Он не может поддерживать следующие запросы —

  • Создайте
  • вставить
  • Обновить
  • удалять
  • падение

Чтобы просмотреть записи во вновь созданной таблице, введите следующий запрос.

запрос

presto:tutorials> select * from mysql.tutorials.sample; 

Результат

auth_id  |   auth_name    | topic 
---------+----------------+-------- 
       1 | Doug Cutting   | Hadoop 
       2 | James Gosling  | java 
       3 | Dennis Ritchie | C

Apache Presto — Соединитель JMX

Расширения управления Java (JMX) предоставляют информацию о виртуальной машине Java и программном обеспечении, работающем внутри JVM. Соединитель JMX используется для запроса информации JMX на сервере Presto.

Поскольку мы уже включили файл «jmx.properties» в каталоге «etc / catalog» . Теперь подключите Perst CLI, чтобы включить плагин JMX.

Presto CLI

запрос

$ ./presto --server localhost:8080 --catalog jmx --schema jmx 

Результат

Вы получите следующий ответ.

presto:jmx> 

Схема JMX

Чтобы перечислить все схемы в «jmx», введите следующий запрос.

запрос

presto:jmx> show schemas from jmx; 

Результат

      Schema 
-------------------- 
 information_schema  
 current

Показать таблицы

Чтобы просмотреть таблицы в «текущей» схеме, используйте следующую команду.

Запрос 1

presto:jmx> show tables from jmx.current; 

Результат

                                    Table                   
------------------------------------------------------------------------------
 com.facebook.presto.execution.scheduler:name = nodescheduler
 com.facebook.presto.execution:name = queryexecution
 com.facebook.presto.execution:name = querymanager
 com.facebook.presto.execution:name = remotetaskfactory
 com.facebook.presto.execution:name = taskexecutor
 com.facebook.presto.execution:name = taskmanager
 com.facebook.presto.execution:type = queryqueue,name = global,expansion = global
 ………………
 ……………….

Запрос 2

presto:jmx> select * from jmx.current.”java.lang:type = compilation"; 

Результат

node               | compilationtimemonitoringsupported |      name   |         objectname         | totalcompilationti
--------------------------------------+------------------------------------+--------------------------------+----------------------------+-------------------
ffffffff-ffff-ffff-ffff-ffffffffffff | true | HotSpot 64-Bit Tiered Compilers | java.lang:type=Compilation |       1276

Запрос 3

presto:jmx> select * from jmx.current."com.facebook.presto.server:name = taskresource";

Результат

 node                 | readfromoutputbuffertime.alltime.count 
 | readfromoutputbuffertime.alltime.max | readfromoutputbuffertime.alltime.maxer
 --------------------------------------+---------------------------------------+--------------------------------------+--------------------------------------- 
 ffffffff-ffff-ffff-ffff-ffffffffffff |                                   92.0 |                          1.009106149 | 

Apache Presto — Соединитель HIVE

Соединитель Hive позволяет запрашивать данные, хранящиеся в хранилище данных Hive.

Предпосылки

  • Hadoop
  • улей

Надеюсь, вы установили Hadoop и Hive на свою машину. Запустите все сервисы по одному в новом терминале. Затем запустите Hive metastore, используя следующую команду:

hive --service metastore

Presto использует службу метастазов Hive для получения сведений о таблице улья.

Настройки конфигурации

Создайте файл «hive.properties» в каталоге «etc / catalog» . Используйте следующую команду.

$ cd etc 
$ cd catalog 
$ vi hive.properties  

connector.name = hive-cdh4 
hive.metastore.uri = thrift://localhost:9083

После внесения всех изменений сохраните файл и выйдите из терминала.

Создать базу данных

Создайте базу данных в Hive, используя следующий запрос —

запрос

hive> CREATE SCHEMA tutorials; 

После создания базы данных вы можете проверить ее с помощью команды «show database» .

Создать таблицу

Создать таблицу — это инструкция, используемая для создания таблицы в Hive. Например, используйте следующий запрос.

hive> create table author(auth_id int, auth_name varchar(50), 
topic varchar(100) STORED AS SEQUENCEFILE;

Вставить таблицу

Следующий запрос используется для вставки записей в таблицу улья.

hive> insert into table author values (1,’ Doug Cutting’,Hadoop),
(2,’ James Gosling’,java),(3,’ Dennis Ritchie’,C);

Запустите Presto CLI

Вы можете запустить Presto CLI для подключения модуля хранения Hive с помощью следующей команды.

$ ./presto --server localhost:8080 --catalog hive —schema tutorials; 

Вы получите следующий ответ.

presto:tutorials >

Список схем

Чтобы вывести список всех схем в соединителе Hive, введите следующую команду.

запрос

presto:tutorials > show schemas from hive;

Результат

default  

tutorials 

Список таблиц

Чтобы вывести список всех таблиц в схеме «учебники», используйте следующий запрос.

запрос

presto:tutorials > show tables from hive.tutorials; 

Результат

author

Fetch Table

Следующий запрос используется для получения всех записей из таблицы улья.

запрос

presto:tutorials > select * from hive.tutorials.author; 

Результат

auth_id  |   auth_name    | topic 
---------+----------------+-------- 
       1 | Doug Cutting   | Hadoop 
       2 | James Gosling  | java 
       3 | Dennis Ritchie | C

Apache Presto — Соединитель KAFKA

Kafka Connector для Presto позволяет получить доступ к данным из Apache Kafka с помощью Presto.

Предпосылки

Загрузите и установите последнюю версию следующих проектов Apache.

  • Apache ZooKeeper
  • Апач Кафка

Запустить ZooKeeper

Запустите сервер ZooKeeper с помощью следующей команды.

$ bin/zookeeper-server-start.sh config/zookeeper.properties

Теперь ZooKeeper запускает порт на 2181.

Старт Кафка

Запустите Kafka в другом терминале, используя следующую команду.

$ bin/kafka-server-start.sh config/server.properties

После запуска kafka используется номер порта 9092.

Данные TPCH

Скачать tpch-kafka

$  curl -o kafka-tpch 
https://repo1.maven.org/maven2/de/softwareforge/kafka_tpch_0811/1.0/kafka_tpch_ 
0811-1.0.sh 

Теперь вы загрузили загрузчик из Maven central с помощью приведенной выше команды. Вы получите ответ, подобный следующему.

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current 
                                 Dload  Upload   Total   Spent    Left  Speed 
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0  
  5 21.6M    5 1279k    0     0  83898      0  0:04:30  0:00:15  0:04:15  129k
  6 21.6M    6 1407k    0     0  86656      0  0:04:21  0:00:16  0:04:05  131k  
 24 21.6M   24 5439k    0     0   124k      0  0:02:57  0:00:43  0:02:14  175k 
 24 21.6M   24 5439k    0     0   124k      0  0:02:58  0:00:43  0:02:15  160k 
 25 21.6M   25 5736k    0     0   128k      0  0:02:52  0:00:44  0:02:08  181k 
 ………………………..

Затем сделайте его исполняемым с помощью следующей команды:

$ chmod 755 kafka-tpch

Запустить тпч-кафку

Запустите программу kafka-tpch, чтобы предварительно загрузить несколько разделов с данными tpch, используя следующую команду.

запрос

$ ./kafka-tpch load --brokers localhost:9092 --prefix tpch. --tpch-type tiny 

Результат

2016-07-13T16:15:52.083+0530 INFO main io.airlift.log.Logging Logging 
to stderr
2016-07-13T16:15:52.124+0530 INFO main de.softwareforge.kafka.LoadCommand
Processing tables: [customer, orders, lineitem, part, partsupp, supplier,
nation, region]
2016-07-13T16:15:52.834+0530 INFO pool-1-thread-1
de.softwareforge.kafka.LoadCommand Loading table 'customer' into topic 'tpch.customer'...
2016-07-13T16:15:52.834+0530 INFO pool-1-thread-2
de.softwareforge.kafka.LoadCommand Loading table 'orders' into topic 'tpch.orders'...
2016-07-13T16:15:52.834+0530 INFO pool-1-thread-3
de.softwareforge.kafka.LoadCommand Loading table 'lineitem' into topic 'tpch.lineitem'...
2016-07-13T16:15:52.834+0530 INFO pool-1-thread-4
de.softwareforge.kafka.LoadCommand Loading table 'part' into topic 'tpch.part'...
………………………
……………………….

Теперь таблицы клиентов Kafka, заказы, поставщики и т. Д. Загружаются с помощью tpch.

Добавить настройки конфигурации

Давайте добавим следующие параметры конфигурации коннектора Kafka на сервере Presto.

connector.name = kafka  

kafka.nodes = localhost:9092  

kafka.table-names = tpch.customer,tpch.orders,tpch.lineitem,tpch.part,tpch.partsupp, 
tpch.supplier,tpch.nation,tpch.region  

kafka.hide-internal-columns = false 

В приведенной выше конфигурации таблицы Kafka загружаются с помощью программы Kafka-tpch.

Запустите Presto CLI

Запустите Presto CLI, используя следующую команду:

$ ./presto --server localhost:8080 --catalog kafka —schema tpch;

Здесь «tpch» — схема для коннектора Kafka, и вы получите ответ в следующем виде.

presto:tpch>

Список таблиц

Следующий запрос перечисляет все таблицы в схеме «tpch» .

запрос

presto:tpch> show tables;

Результат

  Table 
---------- 
 customer 
 lineitem 
 nation 
 orders
 part 
 partsupp 
 region 
 supplier 

Опишите таблицу клиентов

Следующий запрос описывает таблицу «клиент» .

запрос

presto:tpch> describe customer; 

Результат

  Column           |  Type   |                   Comment 
-------------------+---------+--------------------------------------------- 
 _partition_id     | bigint  | Partition Id 
 _partition_offset | bigint  | Offset for the message within the partition 
 _segment_start    | bigint  | Segment start offset 
 _segment_end      | bigint  | Segment end offset 
 _segment_count    | bigint  | Running message count per segment 
 _key              | varchar | Key text 
 _key_corrupt      | boolean | Key data is corrupt 
 _key_length       | bigint  | Total number of key bytes 
 _message          | varchar | Message text 
 _message_corrupt  | boolean | Message data is corrupt 
 _message_length   | bigint  | Total number of message bytes 

Apache Presto — интерфейс JDBC

JDBC-интерфейс Presto используется для доступа к Java-приложению.

Предпосылки

Установите presto-jdbc-0.150.jar

Вы можете скачать JAR-файл JDBC, перейдя по следующей ссылке:

https://repo1.maven.org/maven2/com/facebook/presto/presto-jdbc/0.150/

После загрузки файла JAR добавьте его в путь классов вашего Java-приложения.

Создать простое приложение

Давайте создадим простое Java-приложение с использованием интерфейса JDBC.

Кодирование — PrestoJdbcSample.java

import java.sql.*; 
import com.facebook.presto.jdbc.PrestoDriver; 

//import presto jdbc driver packages here.  
public class PrestoJdbcSample {  
   public static void main(String[] args) {  
      Connection connection = null; 
      Statement statement = null;  
      try { 
         
         Class.forName("com.facebook.presto.jdbc.PrestoDriver");  
         connection = DriverManager.getConnection(
         "jdbc:presto://localhost:8080/mysql/tutorials", "tutorials", "); 
         
         //connect mysql server tutorials database here 
         statement = connection.createStatement(); 
         String sql;  
         sql = "select auth_id, auth_name from mysql.tutorials.author”; 
        
         //select mysql table author table two columns  
         ResultSet resultSet = statement.executeQuery(sql);  
         while(resultSet.next()){  
            int id  = resultSet.getInt("auth_id"); 
            String name = resultSet.getString(“auth_name");  
            System.out.print("ID: " + id + ";\nName: " + name + "\n"); 
         }  
         
         resultSet.close(); 
         statement.close(); 
         connection.close(); 
         
      }catch(SQLException sqlException){ 
         sqlException.printStackTrace(); 
      }catch(Exception exception){ 
         exception.printStackTrace(); 
      } 
   } 
}

Сохраните файл и выйдите из приложения. Теперь запустите сервер Presto в одном терминале и откройте новый терминал для компиляции и выполнения результата. Ниже приведены шаги —

компиляция

~/Workspace/presto/presto-jdbc $ javac -cp presto-jdbc-0.149.jar  PrestoJdbcSample.java

выполнение

~/Workspace/presto/presto-jdbc $ java -cp .:presto-jdbc-0.149.jar  PrestoJdbcSample

Выход

INFO: Logging initialized @146ms  
ID: 1; 
Name: Doug Cutting 
ID: 2; 
Name: James Gosling 
ID: 3; 
Name: Dennis Ritchie 

Apache Presto — Приложение пользовательских функций

Создайте проект Maven для разработки пользовательской функции Presto.

SimpleFunctionsFactory.java

Создайте класс SimpleFunctionsFactory для реализации интерфейса FunctionFactory.

package com.tutorialspoint.simple.functions;  

import com.facebook.presto.metadata.FunctionFactory; 
import com.facebook.presto.metadata.FunctionListBuilder; 
import com.facebook.presto.metadata.SqlFunction; 
import com.facebook.presto.spi.type.TypeManager;  
import java.util.List;  

public class SimpleFunctionFactory implements FunctionFactory { 
   
   private final TypeManager typeManager;  
   public SimpleFunctionFactory(TypeManager typeManager) { 
      this.typeManager = typeManager; 
   }  
    @Override 
    
   public List<SqlFunction> listFunctions() { 
      return new FunctionListBuilder(typeManager) 
      .scalar(SimpleFunctions.class) 
      .getFunctions(); 
   } 
}

SimpleFunctionsPlugin.java

Создайте класс SimpleFunctionsPlugin для реализации интерфейса Plugin.

package com.tutorialspoint.simple.functions;  

import com.facebook.presto.metadata.FunctionFactory; 
import com.facebook.presto.spi.Plugin; 
import com.facebook.presto.spi.type.TypeManager; 
import com.google.common.collect.ImmutableList;  
import javax.inject.Inject; 
import java.util.List; 
import static java.util.Objects.requireNonNull;  

public class SimpleFunctionsPlugin implements Plugin {  
   private TypeManager typeManager; 
   @Inject 
   
   public void setTypeManager(TypeManager typeManager) { 
      this.typeManager = requireNonNull(typeManager, "typeManager is null”); 
      //Inject TypeManager class here 
   }  
   @Override 
   
   public <T> List<T> getServices(Class<T> type){ 
      if (type == FunctionFactory.class) { 
         return ImmutableList.of(type.cast(new SimpleFunctionFactory(typeManager))); 
      } 
      return ImmutableList.of(); 
   } 
}

Добавить файл ресурса

Создайте файл ресурсов, который указан в пакете реализации.

(com.tutorialspoint.simple.functions.SimpleFunctionsPlugin)

Теперь перейдите к расположению файла ресурсов @ / path / to / resource /

Затем добавьте изменения,

com.facebook.presto.spi.Plugin 

pom.xml

Добавьте следующие зависимости в файл pom.xml.

<?xml version = "1.0"?> 
<project xmlns = "http://maven.apache.org/POM/4.0.0"  
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
 xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0  
    http://maven.apache.org/xsd/maven-4.0.0.xsd">  
   
   <modelVersion>4.0.0</modelVersion> 
   <groupId>com.tutorialspoint.simple.functions</groupId> 
   <artifactId>presto-simple-functions</artifactId>  
   <packaging>jar</packaging>  
   <version>1.0</version>
   <name>presto-simple-functions</name>
   <description>Simple test functions for Presto</description> 
   <properties> 
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>  
   <dependencies> 
      <dependency> 
         <groupId>com.facebook.presto</groupId> 
         <artifactId>presto-spi</artifactId>
         <version>0.149</version> 
      </dependency>  
      <dependency> 
         <groupId>com.facebook.presto</groupId> 
         <artifactId>presto-main</artifactId> 
         <version>0.149</version> 
      </dependency>  
      <dependency> 
         <groupId>javax.inject</groupId> 
         <artifactId>javax.inject</artifactId> 
         <version>1</version> 
      </dependency>  
      <dependency> 
         <groupId>com.google.guava</groupId> 
         <artifactId>guava</artifactId> 
         <version>19.0</version> 
      </dependency> 
   </dependencies>  
   <build> 
      <finalName>presto-simple-functions</finalName>  
      <plugins>  
      <!-- Make this jar executable --> 
         <plugin> 
            <groupId>org.apache.maven.plugins</groupId> 
            <artifactId>maven-jar-plugin</artifactId> 
            <version>2.3.2</version> 
         </plugin> 
      </plugins> 
   </build> 
</project>

SimpleFunctions.java

Создайте класс SimpleFunctions, используя атрибуты Presto.

package com.tutorialspoint.simple.functions;  

import com.facebook.presto.operator.Description; 
import com.facebook.presto.operator.scalar.ScalarFunction; 
import com.facebook.presto.operator.scalar.StringFunctions; 
import com.facebook.presto.spi.type.StandardTypes; 
import com.facebook.presto.type.LiteralParameters; 
import com.facebook.presto.type.SqlType;  

public final class SimpleFunctions { 
   private SimpleFunctions() { 
   }  
    
   @Description("Returns summation of two numbers") 
   @ScalarFunction(“mysum") 
   //function name 
   @SqlType(StandardTypes.BIGINT) 
    
   public static long sum(@SqlType(StandardTypes.BIGINT) long num1, 
   @SqlType(StandardTypes.BIGINT) long num2) { 
      return num1 + num2; 
   } 
}

После создания приложения скомпилируйте и выполните приложение. Это произведет файл JAR. Скопируйте файл и переместите файл JAR в каталог подключаемых модулей целевого сервера Presto.

компиляция

mvn compile

выполнение

mvn package

Теперь перезапустите сервер Presto и подключите клиент Presto. Затем выполните приложение пользовательской функции, как описано ниже,