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. Затем выполните приложение пользовательской функции, как описано ниже,