Учебники

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

Apache Tajo — Введение

Хранилище данных — это реляционная база данных, предназначенная для запросов и анализа, а не для обработки транзакций. Это предметно-ориентированный, интегрированный, изменяющийся во времени и энергонезависимый сбор данных. Эти данные помогают аналитикам принимать обоснованные решения в организации, но объемы реляционных данных увеличиваются день ото дня.

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

Apache Tajo — это система распределенного хранилища данных, которая использует распределенную файловую систему Hadoop (HDFS) в качестве уровня хранения и имеет собственный механизм выполнения запросов вместо инфраструктуры MapReduce.

Обзор SQL на Hadoop

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

Некоторыми примерами приложений SQL на Hadoop являются Hive, Impala, Drill, Presto, Spark, HAWQ и Apache Tajo.

Что такое Apache Tajo

Apache Tajo — это реляционная и распределенная среда обработки данных. Он разработан для анализа задержек и масштабируемых специальных запросов.

  • Тахо поддерживает стандартный SQL и различные форматы данных. Большинство запросов Tajo могут быть выполнены без каких-либо изменений.

  • Tajo обладает отказоустойчивостью благодаря механизму перезапуска для неудачных задач и расширяемому механизму перезаписи запросов.

  • Tajo выполняет необходимые операции ETL (извлечения, преобразования и загрузки) для суммирования больших наборов данных, хранящихся в HDFS. Это альтернатива Hive / Pig.

Тахо поддерживает стандартный SQL и различные форматы данных. Большинство запросов Tajo могут быть выполнены без каких-либо изменений.

Tajo обладает отказоустойчивостью благодаря механизму перезапуска для неудачных задач и расширяемому механизму перезаписи запросов.

Tajo выполняет необходимые операции ETL (извлечения, преобразования и загрузки) для суммирования больших наборов данных, хранящихся в HDFS. Это альтернатива Hive / Pig.

Последняя версия Tajo имеет улучшенную связь с Java-программами и сторонними базами данных, такими как Oracle и PostGreSQL.

Особенности Apache Tajo

Apache Tajo имеет следующие особенности —

  • Превосходная масштабируемость и оптимизированная производительность
  • Низкая задержка
  • Пользовательские функции
  • Структура обработки строк / столбчатых хранилищ.
  • Совместимость с HiveQL и Hive MetaStore
  • Простой поток данных и простота обслуживания.

Преимущества Apache Tajo

Apache Tajo предлагает следующие преимущества:

  • Легко использовать
  • Упрощенная архитектура
  • Оптимизация запросов на основе затрат
  • Векторизованный план выполнения запроса
  • Быстрая доставка
  • Простой механизм ввода-вывода и поддерживает различные типы хранения.
  • Отказоустойчивость

Использовать случаи Apache Tajo

Ниже приведены некоторые примеры использования Apache Tajo:

Хранение данных и анализ

Корейская фирма SK Telecom определила Tajo с объемом данных 1,7 терабайта и обнаружила, что может выполнять запросы с большей скоростью, чем Hive или Impala.

Обнаружение данных

Корейский сервис потоковой передачи музыки Melon использует Tajo для аналитической обработки. Tajo выполняет задания ETL (извлечения-преобразования-загрузки) в 1,5-10 раз быстрее, чем Hive.

Анализ журнала

Bluehole Studio, корейская компания, разработала TERA — фантастическую многопользовательскую онлайн-игру. Компания использует Tajo для анализа игрового журнала и поиска основных причин прерывания качества обслуживания.

Форматы хранения и данных

Apache Tajo поддерживает следующие форматы данных —

  • JSON
  • Текстовый файл (CSV)
  • Паркет
  • Файл последовательности
  • AVRO
  • Буфер протокола
  • Apache Orc

Tajo поддерживает следующие форматы хранения —

  • HDFS
  • JDBC
  • Amazon S3
  • Apache HBase
  • Elasticsearch

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

Следующая иллюстрация изображает архитектуру Apache Tajo.

Архитектура

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

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

клиент

Клиент отправляет операторы SQL Мастеру Тахо, чтобы получить результат.

2

Мастер

Мастер — главный демон. Он отвечает за планирование запросов и является координатором для рабочих.

3

Сервер каталогов

Поддерживает описания таблиц и индексов. Он встроен в Демон Мастера. Сервер каталога использует Apache Derby в качестве уровня хранения и подключается через клиент JDBC.

4

работник

Главный узел назначает задачу рабочим узлам. TajoWorker обрабатывает данные. По мере увеличения числа TajoWorkers производительность обработки также увеличивается линейно.

5

Мастер запросов

Мастер Тахо назначает запрос Мастеру запросов. Мастер запросов отвечает за управление планом распределенного выполнения. Он запускает TaskRunner и планирует задачи для TaskRunner. Основная роль мастера запросов заключается в мониторинге запущенных задач и сообщении о них главному узлу.

6

Менеджеры узлов

Управляет ресурсом рабочего узла. Он принимает решение о распределении запросов к узлу.

7

TaskRunner

Действует как локальный механизм выполнения запросов. Он используется для запуска и мониторинга процесса запроса. TaskRunner обрабатывает одну задачу за раз.

Он имеет следующие три основных атрибута —

  • Логический план — блок выполнения, который создал задачу.
  • Фрагмент — входной путь, диапазон смещения и схема.
  • Извлекает URI
8

Query Executor

Используется для выполнения запроса.

9

Складское обслуживание

Соединяет базовое хранилище данных с Tajo.

клиент

Клиент отправляет операторы SQL Мастеру Тахо, чтобы получить результат.

Мастер

Мастер — главный демон. Он отвечает за планирование запросов и является координатором для рабочих.

Сервер каталогов

Поддерживает описания таблиц и индексов. Он встроен в Демон Мастера. Сервер каталога использует Apache Derby в качестве уровня хранения и подключается через клиент JDBC.

работник

Главный узел назначает задачу рабочим узлам. TajoWorker обрабатывает данные. По мере увеличения числа TajoWorkers производительность обработки также увеличивается линейно.

Мастер запросов

Мастер Тахо назначает запрос Мастеру запросов. Мастер запросов отвечает за управление планом распределенного выполнения. Он запускает TaskRunner и планирует задачи для TaskRunner. Основная роль мастера запросов заключается в мониторинге запущенных задач и сообщении о них главному узлу.

Менеджеры узлов

Управляет ресурсом рабочего узла. Он принимает решение о распределении запросов к узлу.

TaskRunner

Действует как локальный механизм выполнения запросов. Он используется для запуска и мониторинга процесса запроса. TaskRunner обрабатывает одну задачу за раз.

Он имеет следующие три основных атрибута —

Query Executor

Используется для выполнения запроса.

Складское обслуживание

Соединяет базовое хранилище данных с Tajo.

Workflow

Tajo использует распределенную файловую систему Hadoop (HDFS) в качестве уровня хранения и имеет собственный механизм выполнения запросов вместо инфраструктуры MapReduce. Кластер Tajo состоит из одного главного узла и нескольких рабочих в узлах кластера.

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

Кроме того, Tajo может управлять распределенным потоком данных более гибким, чем в MapReduce, и поддерживает методы индексирования.

Веб-интерфейс Tajo имеет следующие возможности —

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

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

Для установки Apache Tajo в вашей системе должно быть установлено следующее программное обеспечение:

  • Hadoop версии 2.3 или выше
  • Java версии 1.7 или выше
  • Linux или Mac OS

Давайте теперь продолжим со следующими шагами, чтобы установить Tajo.

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

Надеюсь, вы уже установили Java версии 8 на вашем компьютере. Теперь вам просто нужно продолжить, проверив его.

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

$ java -version

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

Скачать JDK

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

https://www.oracle.com

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

Проверка правильности установки Hadoop

Вы уже установили Hadoop в своей системе. Теперь проверьте это с помощью следующей команды —

$ hadoop version 

Если с настройкой все в порядке, вы можете увидеть версию Hadoop. Если Hadoop не установлен, загрузите и установите Hadoop, перейдя по следующей ссылке — https://www.apache.org

Установка Apache Tajo

Apache Tajo предоставляет два режима исполнения — локальный режим и полностью распределенный режим. После проверки установки Java и Hadoop выполните следующие шаги, чтобы установить кластер Tajo на свой компьютер. Экземпляр Tajo в локальном режиме требует очень простых настроек.

Загрузите последнюю версию Tajo, перейдя по следующей ссылке — https://www.apache.org/dyn/closer.cgi/tajo

Теперь вы можете скачать файл «tajo-0.11.3.tar.gz» с вашего компьютера.

Извлечь файл Tar

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

$ cd opt/ 
$ tar tajo-0.11.3.tar.gz 
$ cd tajo-0.11.3

Задать переменную среды

Добавьте следующие изменения в файл «conf / tajo-env.sh»

$ cd tajo-0.11.3 
$ vi conf/tajo-env.sh
 
# Hadoop home. Required 
export HADOOP_HOME = /Users/path/to/Hadoop/hadoop-2.6.2
 
# The java implementation to use.  Required. 
export JAVA_HOME = /path/to/jdk1.8.0_92.jdk/ 

Здесь вы должны указать путь Hadoop и Java к файлу «tajo-env.sh» . После внесения изменений сохраните файл и выйдите из терминала.

Запустите Tajo Server

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

$ bin/start-tajo.sh 

Вы получите ответ, подобный следующему —

Starting single TajoMaster 
starting master, logging to /Users/path/to/Tajo/tajo-0.11.3/bin/../ 
localhost: starting worker, logging to /Users/path/toe/Tajo/tajo-0.11.3/bin/../logs/
 
Tajo master web UI: http://local:26080 
Tajo Client Service: local:26002

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

$ jps  
1010 TajoWorker 
1140 Jps 
933 TajoMaster 

Запуск Тахо Shell (Tsql)

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

$ bin/tsql

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

welcome to
   _____ ___  _____ ___ 
  /_  _/ _  |/_  _/   / 
   / // /_| |_/ // / / 
  /_//_/ /_/___/ \__/  0.11.3
  
Try \? for help. 

Выйти из Тахо Shell

Выполните следующую команду, чтобы выйти из Tsql —

default> \q 
bye! 

Здесь значение по умолчанию относится к каталогу в Tajo.

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

Введите следующий URL для запуска веб-интерфейса Tajo — http: // localhost: 26080 /

Теперь вы увидите следующий экран, который похож на опцию ExecuteQuery.

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

Стоп Тахо

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

$ bin/stop-tajo.sh 

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

localhost: stopping worker 
stopping master

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

Конфигурация Tajo основана на системе конфигурации Hadoop. В этой главе подробно описываются настройки конфигурации Tajo.

Базовые настройки

Тахо использует следующие два файла конфигурации:

  • catalog-site.xml — конфигурация для сервера каталога.
  • tajo-site.xml — настройка для других модулей Tajo.

Конфигурация распределенного режима

Настройка распределенного режима выполняется в распределенной файловой системе Hadoop (HDFS). Давайте следуем инструкциям по настройке распределенного режима Tajo.

Tajo-site.xml

Этот файл доступен в каталоге @ / path / to / tajo / conf и служит конфигурацией для других модулей Tajo. Чтобы получить доступ к Tajo в распределенном режиме, примените следующие изменения к «tajo-site.xml» .

<property> 
   <name>tajo.rootdir</name> 
   <value>hdfs://hostname:port/tajo</value> 
</property>
  
<property> 
   <name>tajo.master.umbilical-rpc.address</name> 
   <value>hostname:26001</value> 
</property> 
 
<property> 
   <name>tajo.master.client-rpc.address</name> 
   <value>hostname:26002</value> 
</property>
  
<property> 
   <name>tajo.catalog.client-rpc.address</name> 
   <value>hostname:26005</value> 
</property>   

Конфигурация главного узла

Tajo использует HDFS в качестве основного типа хранилища. Конфигурация следующая и должна быть добавлена ​​в «tajo-site.xml» .

<property> 
   <name>tajo.rootdir</name> 
   <value>hdfs://namenode_hostname:port/path</value> 
</property> 

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

Если вы хотите настроить службу каталогов, скопируйте $ path / to / Tajo / conf / catalogsite.xml.template в $ path / to / Tajo / conf / catalog-site.xml и добавьте любую из следующих конфигураций по мере необходимости.

Например, если вы используете «Хранилище каталогов Hive» для доступа к Tajo, конфигурация должна быть такой:

<property> 
   <name>tajo.catalog.store.class</name> 
   <value>org.apache.tajo.catalog.store.HCatalogStore</value> 
</property> 

Если вам необходимо сохранить каталог MySQL , примените следующие изменения:

<property> 
   <name>tajo.catalog.store.class</name> 
   <value>org.apache.tajo.catalog.store.MySQLStore</value> 
</property> 

<property> 
   <name>tajo.catalog.jdbc.connection.id</name> 
   <value><mysql user name></value> 
</property>
 
<property> 
   <name>tajo.catalog.jdbc.connection.password</name> 
   <value><mysql user password></value> 
</property>
 
<property> 
   <name>tajo.catalog.jdbc.uri</name> 
   <value>jdbc:mysql://<mysql host name>:<mysql port>/<database name for tajo>
      ?createDatabaseIfNotExist = true</value> 
</property> 

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

Конфигурация рабочего

По умолчанию TajoWorker хранит временные данные в локальной файловой системе. Он определяется в файле «tajo-site.xml» следующим образом:

<property> 
   <name>tajo.worker.tmpdir.locations</name> 
   <value>/disk1/tmpdir,/disk2/tmpdir,/disk3/tmpdir</value> 
</property> 

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

<property> 
   <name>tajo.worker.resource.cpu-cores</name> 
   <value>12</value> 
</property>
 
<property> 
   <name>tajo.task.resource.min.memory-mb</name> 
   <value>2000</value> 
</property>
  
<property> 
   <name>tajo.worker.resource.disks</name> 
   <value>4</value> 
</property> 

Чтобы рабочий Tajo работал в выделенном режиме, выберите следующую конфигурацию:

<property> 
   <name>tajo.worker.resource.dedicated</name> 
   <value>true</value> 
</property> 

Apache Tajo — Команды оболочки

В этой главе мы подробно разберем команды оболочки Тахо.

Для выполнения команд оболочки Tajo необходимо запустить сервер Tajo и оболочку Tajo, используя следующие команды:

Запустить сервер

$ bin/start-tajo.sh 

Начать Shell

$ bin/tsql 

Вышеуказанные команды теперь готовы к выполнению.

Мета Команды

Давайте теперь обсудим мета-команды . Метакоманды Tsql начинаются с обратной косой черты (‘\’) .

Команда помощи

Команда «\?» Используется для отображения опции справки.

запрос

 по умолчанию> \? 

Результат

Выше \? Список команд из всех основных вариантов использования в Tajo. Вы получите следующий вывод —

команда

База данных списка

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

запрос

default> \l 

Результат

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

information_schema 
default

В настоящее время мы не создали никакой базы данных, поэтому она показывает две встроенные базы данных Tajo.

Текущая база данных

Параметр \ c используется для отображения текущего имени базы данных.

запрос

default> \c

Результат

Теперь вы подключены к базе данных «по умолчанию» как пользователь «username».

Перечислите встроенные функции

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

запрос

default> \df 

Результат

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

Перечислите встроенные функции

Опишите функцию

\ df имя функции — этот запрос возвращает полное описание данной функции.

запрос

default> \df sqrt 

Результат

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

Опишите функцию

Выйти из терминала

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

запрос

default> \q 

Результат

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

bye! 

Команды администратора

Оболочка Tajo предоставляет опцию \ admin для перечисления всех функций администратора.

запрос

default> \admin 

Результат

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

Команды администратора

Информация о кластере

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

запрос

default> \admin -cluster 

Результат

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

Информация о кластере

Показать мастер

Следующий запрос отображает текущую основную информацию.

запрос

default> \admin -showmasters 

Результат

localhost 

Точно так же вы можете попробовать другие команды администратора.

Переменные сеанса

Клиент Tajo подключается к Мастеру через уникальный идентификатор сеанса. Сеанс активен, пока клиент не отключен или не истекает.

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

запрос

default> \set 

Результат

'SESSION_LAST_ACCESS_TIME' = '1470206387146' 
'CURRENT_DATABASE' = 'default' 
‘USERNAME’ = 'user' 
'SESSION_ID' = 'c60c9b20-dfba-404a-822f-182bc95d6c7c' 
'TIMEZONE' = 'Asia/Kolkata' 
'FETCH_ROWNUM' = '200' 
‘COMPRESSED_RESULT_TRANSFER' = 'false' 

\ Set key val устанавливает переменную сеанса с именем key со значением val . Например,

запрос

default> \set ‘current_database’='default' 

Результат

usage: \set [[NAME] VALUE] 

Здесь вы можете назначить ключ и значение в команде \ set . Если вам нужно отменить изменения, используйте команду \ unset .

Apache Tajo — Типы данных

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

$ bin/tsql 

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

default> 

Теперь вы можете выполнять ваши запросы. В противном случае вы можете выполнить свои запросы через приложение веб-консоли по следующему URL-адресу — http: // localhost: 26080 /

Примитивные типы данных

Apache Tajo поддерживает следующий список примитивных типов данных —

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

целое число

Используется для хранения целочисленных значений с 4 байтами хранения.

2

TINYINT

Крошечное целочисленное значение составляет 1 байт

3

SMALLINT

Используется для хранения небольшого целого числа размером 2 байта.

4

BIGINT

Целочисленное значение большого диапазона имеет 8 байтов.

5

логический

Возвращает истину / ложь.

6

реальный

Используется для хранения реальной стоимости. Размер 4 байта.

7

поплавок

Значение точности с плавающей запятой, которое имеет 4 или 8 байтов памяти.

8

двойной

Значение точности двойной точки хранится в 8 байтах.

9

символ [(п)]

Значение символа.

10

VARCHAR [(п)]

Данные не-Unicode переменной длины.

11

число

Десятичные значения.

12

двоичный

Двоичные значения.

13

Дата

Календарная дата (год, месяц, день).

Пример — ДАТА ‘2016-08-22’

14

время

Время суток (час, минута, секунда, миллисекунда) без часового пояса. Значения этого типа анализируются и отображаются в часовом поясе сеанса.

15

часовой пояс

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

Пример — ВРЕМЯ ’01: 02: 03.456 Азия / Калькутта ‘

16

отметка времени

Момент времени, который включает в себя дату и время суток без часового пояса.

Пример — TIMESTAMP ‘2016-08-22 03: 04: 05.321’

17

текст

Текст Unicode переменной длины.

целое число

Используется для хранения целочисленных значений с 4 байтами хранения.

TINYINT

Крошечное целочисленное значение составляет 1 байт

SMALLINT

Используется для хранения небольшого целого числа размером 2 байта.

BIGINT

Целочисленное значение большого диапазона имеет 8 байтов.

логический

Возвращает истину / ложь.

реальный

Используется для хранения реальной стоимости. Размер 4 байта.

поплавок

Значение точности с плавающей запятой, которое имеет 4 или 8 байтов памяти.

двойной

Значение точности двойной точки хранится в 8 байтах.

символ [(п)]

Значение символа.

VARCHAR [(п)]

Данные не-Unicode переменной длины.

число

Десятичные значения.

двоичный

Двоичные значения.

Дата

Календарная дата (год, месяц, день).

Пример — ДАТА ‘2016-08-22’

время

Время суток (час, минута, секунда, миллисекунда) без часового пояса. Значения этого типа анализируются и отображаются в часовом поясе сеанса.

часовой пояс

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

Пример — ВРЕМЯ ’01: 02: 03.456 Азия / Калькутта ‘

отметка времени

Момент времени, который включает в себя дату и время суток без часового пояса.

Пример — TIMESTAMP ‘2016-08-22 03: 04: 05.321’

текст

Текст Unicode переменной длины.

Apache Tajo — Операторы

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

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

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

2 Реляционные операторы

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

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

И, ИЛИ НЕ

4 Строковые операторы

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

5 Операторы диапазона

Оператор диапазона используется для проверки значения в определенном диапазоне. Тахо поддерживает операторы МЕЖДУ, НУЛЕМ, НЕ НУЛЕМ.

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

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

И, ИЛИ НЕ

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

Оператор диапазона используется для проверки значения в определенном диапазоне. Тахо поддерживает операторы МЕЖДУ, НУЛЕМ, НЕ НУЛЕМ.

Apache Tajo — Функции SQL

На данный момент вы знали о выполнении простых базовых запросов на Tajo. В следующих последующих нескольких главах мы обсудим следующие функции SQL:

Apache Tajo — математические функции

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

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

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

2 cbrt (х)

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

3 CEIL (х)

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

4 пол (х)

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

5 число Пи()

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

6 радиан (х)

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

7 градусов (х)

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

8 пау (х, р)

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

9 ДИВ (х, у)

Возвращает результат деления для указанных двух целых значений x, y.

10 ехр (х)

Возвращает число Эйлера e, возведенное в степень числа.

11 SQRT (х)

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

12 знак (х)

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

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

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

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

13 мод (п, т)

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

14 круглые (х)

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

15 сов (х)

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

16 ASIN (х)

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

17 экоса (х)

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

18 Atan (х)

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

19 atan2 (у, х)

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

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

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

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

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

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

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

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

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

Возвращает результат деления для указанных двух целых значений x, y.

Возвращает число Эйлера e, возведенное в степень числа.

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

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

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

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

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

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

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

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

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

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

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

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

Функции типа данных

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

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

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

2 to_char (интермедиат, текст)

Преобразует целое число в строку.

3 to_hex (х)

Преобразует значение x в шестнадцатеричное.

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

Преобразует целое число в строку.

Преобразует значение x в шестнадцатеричное.

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

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

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

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

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

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

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

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

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

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

5 ASCII (текст строки)

Возвращает код ASCII первого символа текста.

6 bit_length (текст строки)

Возвращает количество битов в строке.

7 char_length (текст строки)

Возвращает количество символов в строке.

8 octet_length (текст строки)

Возвращает количество байтов в строке.

9 дайджест (ввод текста, метод текста)

Вычисляет дайджест хеша строки. Здесь второй метод arg относится к методу хэширования.

10 initcap (текст строки)

Преобразует первую букву каждого слова в верхний регистр.

11 md5 (текст строки)

Вычисляет MD5 хеш строки.

12 слева (текст строки, размер int)

Возвращает первые n символов в строке.

13 справа (текст строки, размер int)

Возвращает последние n символов в строке.

14 locate (исходный текст, целевой текст, start_index)

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

15 strposb (исходный текст, целевой текст)

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

16 substr (исходный текст, начальный индекс, длина)

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

17 обрезать (текст строки [, текст символов])

Удаляет символы (по умолчанию пробел) из начала / конца / обоих концов строки.

18 split_part (текст строки, текст разделителя, поле int)

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

19 regexp_replace (текст строки, текст шаблона, текст замены)

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

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

Обратная операция выполняется для строки.

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

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

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

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

Возвращает код ASCII первого символа текста.

Возвращает количество битов в строке.

Возвращает количество символов в строке.

Возвращает количество байтов в строке.

Вычисляет дайджест хеша строки. Здесь второй метод arg относится к методу хэширования.

Преобразует первую букву каждого слова в верхний регистр.

Вычисляет MD5 хеш строки.

Возвращает первые n символов в строке.

Возвращает последние n символов в строке.

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

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

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

Удаляет символы (по умолчанию пробел) из начала / конца / обоих концов строки.

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

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

Обратная операция выполняется для строки.

Apache Tajo — Функции DateTime

Apache Tajo поддерживает следующие функции DateTime.

S.No. Описание функции
1 add_days (дата дата или время, int день

Возвращает дату, добавленную к указанному значению дня.

2 add_months (дата дата или метка времени, int месяц)

Возвращает дату, добавленную к указанному значению месяца.

3 текущая дата()

Возвращает сегодняшнюю дату.

4 Текущее время()

Возвращает сегодняшнее время.

5 извлечение (век от даты / метки времени)

Извлекает век из заданного параметра.

6 извлечение (день от даты / метки времени)

Извлекает день из заданного параметра.

7 извлечение (декада от даты / метки времени)

Извлекает декаду из заданного параметра.

8 выдержка (день / дата / время)

Извлекает день недели из заданного параметра.

9 извлечение (дой из даты / метки времени)

Извлекает день года из заданного параметра.

10 выберите выдержку (час с отметки времени)

Извлекает час из заданного параметра.

11 выберите экстракт (isodow из отметки времени)

Извлекает день недели из заданного параметра. Это идентично доу, кроме воскресенья. Это соответствует ISO 8601 день нумерации недели.

12 выберите выписку (год от даты)

Извлекает ISO год из указанной даты. Год ISO может отличаться от года Григорианский.

13 выдержка (микросекунды от времени)

Извлекает микросекунды из заданного параметра. Поле секунд, включая дробные части, умноженное на 1 000 000;

14 выдержка (тысячелетие из отметки времени)

Из этого показателя извлекается тысячелетие. Одно тысячелетие соответствует 1000 годам. Следовательно, третье тысячелетие началось 1 января 2001 года.

15 извлечение (миллисекунды от времени)

Извлекает миллисекунды из данного параметра.

16 извлечь (минута от отметки времени)

Извлекает минуту из заданного параметра.

17 выписка (четверть от метки времени)

Извлекает квартал года (1 — 4) из заданного параметра.

18 date_part (текст поля, исходная дата или метка времени или время)

Извлекает поле даты из текста.

19 сейчас()

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

20 to_char (отметка времени, формат текста)

Преобразует метку времени в текст.

21 to_date (текст src, формат текста)

Преобразует текст в дату.

22 to_timestamp (текст src, формат текста)

Преобразует текст в метку времени.

Возвращает дату, добавленную к указанному значению дня.

Возвращает дату, добавленную к указанному значению месяца.

Возвращает сегодняшнюю дату.

Возвращает сегодняшнее время.

Извлекает век из заданного параметра.

Извлекает день из заданного параметра.

Извлекает декаду из заданного параметра.

Извлекает день недели из заданного параметра.

Извлекает день года из заданного параметра.

Извлекает час из заданного параметра.

Извлекает день недели из заданного параметра. Это идентично доу, кроме воскресенья. Это соответствует ISO 8601 день нумерации недели.

Извлекает ISO год из указанной даты. Год ISO может отличаться от года Григорианский.

Извлекает микросекунды из заданного параметра. Поле секунд, включая дробные части, умноженное на 1 000 000;

Из этого показателя извлекается тысячелетие. Одно тысячелетие соответствует 1000 годам. Следовательно, третье тысячелетие началось 1 января 2001 года.

Извлекает миллисекунды из данного параметра.

Извлекает минуту из заданного параметра.

Извлекает квартал года (1 — 4) из заданного параметра.

Извлекает поле даты из текста.

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

Преобразует метку времени в текст.

Преобразует текст в дату.

Преобразует текст в метку времени.

Apache Tajo — JSON Функции

Функции JSON перечислены в следующей таблице:

S.No. Описание функции
1 json_extract_path_text (js для текста, json_path text)

Извлекает строку JSON из строки JSON на основе указанного пути json.

2 json_array_get (текст json_array, индекс int4)

Возвращает элемент по указанному индексу в массив JSON.

3 json_array_contains (текст массива json_, значение любое)

Определите, существует ли данное значение в массиве JSON.

4 json_array_length (json_ar ray text)

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

Извлекает строку JSON из строки JSON на основе указанного пути json.

Возвращает элемент по указанному индексу в массив JSON.

Определите, существует ли данное значение в массиве JSON.

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

Apache Tajo — Создание базы данных

В этом разделе описываются команды Tajo DDL. Tajo имеет встроенную базу данных с именем default .

Создать заявление базы данных

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

CREATE DATABASE [IF NOT EXISTS] <database_name> 

запрос

default> default> create database if not exists test; 

Результат

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

OK

База данных — это пространство имен в Тахо. База данных может содержать несколько таблиц с уникальным именем.

Показать текущую базу данных

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

запрос

default> \c 

Результат

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

You are now connected to database "default" as user “user1". 
default>  

Подключиться к базе данных

На данный момент вы создали базу данных с именем «test». Следующий синтаксис используется для подключения «тестовой» базы данных.

\c <database name> 

запрос

default> \c test 

Результат

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

You are now connected to database "test" as user “user1”. 
test>

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

Удалить базу данных

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

DROP DATABASE <database-name> 

запрос

test> \c default 
You are now connected to database "default" as user user1". 
default> drop database test; 

Результат

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

OK 

Apache Tajo — Управление таблицами

Таблица — это логическое представление одного источника данных. Он состоит из логической схемы, разделов, URL и различных свойств. Таблицей Tajo может быть каталог в HDFS, отдельный файл, одна таблица HBase или таблица RDBMS.

Тахо поддерживает следующие два типа таблиц —

  • внешний стол
  • внутренний стол

Внешний стол

Внешняя таблица нуждается в свойстве местоположения при создании таблицы. Например, если ваши данные уже есть в виде файлов Text / JSON или таблицы HBase, вы можете зарегистрировать их как внешнюю таблицу Tajo.

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

create external table sample(col1 int,col2 text,col3 int) location ‘hdfs://path/to/table';

Вот,

  • Внешнее ключевое слово — используется для создания внешней таблицы. Это помогает создать таблицу в указанном месте.

  • Образец относится к имени таблицы.

  • Местоположение — это каталог для HDFS, Amazon S3, HBase или локальной файловой системы. Чтобы назначить свойство местоположения для каталогов, используйте приведенные ниже примеры URI —

    • HDFS — hdfs: // localhost: порт / путь / к / таблице

    • Amazon S3 — s3: // имя корзины / таблица

    • локальная файловая система — файл: /// путь / к / таблице

    • Openstack Swift — swift: // имя корзины / таблица

Внешнее ключевое слово — используется для создания внешней таблицы. Это помогает создать таблицу в указанном месте.

Образец относится к имени таблицы.

Местоположение — это каталог для HDFS, Amazon S3, HBase или локальной файловой системы. Чтобы назначить свойство местоположения для каталогов, используйте приведенные ниже примеры URI —

HDFS — hdfs: // localhost: порт / путь / к / таблице

Amazon S3 — s3: // имя корзины / таблица

локальная файловая система — файл: /// путь / к / таблице

Openstack Swift — swift: // имя корзины / таблица

Свойства таблицы

Внешняя таблица имеет следующие свойства —

  • TimeZone — пользователи могут указать часовой пояс для чтения или записи таблицы.

  • Формат сжатия — используется для уменьшения размера данных. Например, текстовый / json-файл использует свойство compress.codec .

TimeZone — пользователи могут указать часовой пояс для чтения или записи таблицы.

Формат сжатия — используется для уменьшения размера данных. Например, текстовый / json-файл использует свойство compress.codec .

Внутренняя таблица

Внутренняя таблица также называется управляемой таблицей . Он создается в заранее определенном физическом месте, называемом табличным пространством.

Синтаксис

create table table1(col1 int,col2 text);

По умолчанию Tajo использует «tajo.warehouse.directory», расположенный в «conf / tajo-site.xml». Чтобы назначить новое местоположение для таблицы, вы можете использовать конфигурацию табличного пространства.

Табличное

Табличное пространство используется для определения местоположений в системе хранения. Поддерживается только для внутренних таблиц. Вы можете получить доступ к табличным пространствам по их именам. Каждое табличное пространство может использовать другой тип хранения. Если вы не укажете табличные пространства, Tajo использует табличное пространство по умолчанию в корневом каталоге.

Конфигурация табличного пространства

У вас есть «conf / tajo-site.xml.template» в Тахо. Скопируйте файл и переименуйте его в «storagesite.json» . Этот файл будет действовать как конфигурация для табличных пространств. Форматы данных Tajo используют следующую конфигурацию —

Конфигурация HDFS

$ vi conf/storage-site.json { 
   "spaces": {  
      "${tablespace_name}": {  
         "uri": hdfs://localhost:9000/path/to/Tajo"  
      } 
   } 
}

Конфигурация HBase

$ vi conf/storage-site.json { 
   "spaces": {  
      "${tablespace_name}": {  
         "uri": hbase:zk://quorum1:port,quorum2:port/"  
      } 
   } 
}

Конфигурация текстового файла

$ vi conf/storage-site.json { 
   "spaces": {  
      "${tablespace_name}": {  
         uri”: hdfs://localhost:9000/path/to/Tajo” 
      } 
   } 
}

Создание табличного пространства

Доступ к записям внутренней таблицы Tajo возможен только из другой таблицы. Вы можете настроить его с табличным пространством.

Синтаксис

CREATE TABLE [IF NOT EXISTS] <table_name> [(column_list)] [TABLESPACE tablespace_name] 
[using <storage_type> [with (<key> = <value>, ...)]] [AS <select_statement>]

Вот,

  • ЕСЛИ НЕ СУЩЕСТВУЕТ — Это позволяет избежать ошибки, если эта же таблица еще не была создана.

  • TABLESPACE — это предложение используется для назначения имени табличного пространства.

  • Тип хранения — данные Tajo поддерживают такие форматы, как текст, JSON, HBase, Parquet, Sequencefile и ORC.

  • Оператор выбора AS — выберите записи из другой таблицы.

ЕСЛИ НЕ СУЩЕСТВУЕТ — Это позволяет избежать ошибки, если эта же таблица еще не была создана.

TABLESPACE — это предложение используется для назначения имени табличного пространства.

Тип хранения — данные Tajo поддерживают такие форматы, как текст, JSON, HBase, Parquet, Sequencefile и ORC.

Оператор выбора AS — выберите записи из другой таблицы.

Настроить табличное пространство

Запустите сервисы Hadoop и откройте файл «conf / storage-site.json» , затем добавьте следующие изменения:

$ vi conf/storage-site.json { 
   "spaces": {  
      space1”: {  
         "uri": hdfs://localhost:9000/path/to/Tajo" 
      } 
   } 
} 

Здесь Tajo будет ссылаться на данные из расположения HDFS, а space1 — это имя табличного пространства. Если вы не запускаете сервисы Hadoop, вы не можете зарегистрировать табличное пространство.

запрос

default> create table table1(num1 int,num2 text,num3 float) tablespace space1;

Приведенный выше запрос создает таблицу с именем «table1», а «space1» относится к имени табличного пространства.

Форматы данных

Тахо поддерживает форматы данных. Давайте подробно рассмотрим каждый из форматов.

Текст

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

Создание таблицы

default> create external table customer(id int,name text,address text,age int) 
   using text with('text.delimiter'=',') location file:/Users/workspace/Tajo/customers.csv’;

Здесь файл customer.csv относится к файлу значений, разделенных запятыми, который находится в каталоге установки Tajo.

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

default> create table customer(id int,name text,address text,age int) using text; 

В приведенном выше запросе вы не назначили никакого табличного пространства, поэтому оно займет табличное пространство Tajo по умолчанию.

свойства

Формат текстового файла имеет следующие свойства —

  • text.delimiter — это символ-разделитель. По умолчанию ‘|’.

  • сжатие.кодек — это формат сжатия. По умолчанию он отключен. Вы можете изменить настройки, используя указанный алгоритм.

  • часовой пояс — таблица, используемая для чтения или записи.

  • text.error-толерантность.max-num — максимальное количество уровней допуска.

  • text.skip.headerlines — Количество строк заголовка на пропущенный.

  • text.serde — это свойство сериализации.

text.delimiter — это символ-разделитель. По умолчанию ‘|’.

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

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

text.error-толерантность.max-num — максимальное количество уровней допуска.

text.skip.headerlines — Количество строк заголовка на пропущенный.

text.serde — это свойство сериализации.

JSON

Apache Tajo поддерживает формат JSON для запроса данных. Тахо рассматривает объект JSON как запись SQL. Один объект равен одной строке в таблице Tajo. Давайте рассмотрим «массив.json» следующим образом:

$ hdfs dfs -cat /json/array.json { 
   "num1" : 10, 
   "num2" : "simple json array", 
   "num3" : 50.5 
}

После создания этого файла переключитесь на оболочку Tajo и введите следующий запрос, чтобы создать таблицу в формате JSON.

запрос

default> create external table sample (num1 int,num2 text,num3 float) 
   using json location json/array.json’;

Всегда помните, что данные файла должны соответствовать схеме таблицы. В противном случае вы можете опустить имена столбцов и использовать *, который не требует списка столбцов.

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

default> create table sample (num1 int,num2 text,num3 float) using json;

Паркет

Паркет — это столбчатый формат хранения. Tajo использует формат Parquet для легкого, быстрого и эффективного доступа.

Создание таблицы

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

CREATE TABLE parquet (num1 int,num2 text,num3 float) USING PARQUET; 

Формат файла паркета имеет следующие свойства —

  • parquet.block.size — размер группы строк, которая буферизуется в памяти.

  • parquet.page.size — размер страницы для сжатия.

  • parquet.compression — алгоритм сжатия, используемый для сжатия страниц.

  • parquet.enable.dictionary — логическое значение для включения / выключения кодирования словаря.

parquet.block.size — размер группы строк, которая буферизуется в памяти.

parquet.page.size — размер страницы для сжатия.

parquet.compression — алгоритм сжатия, используемый для сжатия страниц.

parquet.enable.dictionary — логическое значение для включения / выключения кодирования словаря.

файл_конфигурации

RCFile — это файл записи столбца. Он состоит из двоичных пар ключ / значение.

Создание таблицы

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

CREATE TABLE Record(num1 int,num2 text,num3 float) USING RCFILE; 

RCFile имеет следующие свойства —

  • rcfile.serde — пользовательский класс десериализатора.

  • сжатие.кодек — алгоритм сжатия.

  • rcfile.null — NULL символ.

rcfile.serde — пользовательский класс десериализатора.

сжатие.кодек — алгоритм сжатия.

rcfile.null — NULL символ.

SequenceFile

SequenceFile — это основной формат файла в Hadoop, который состоит из пар ключ / значение.

Создание таблицы

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

CREATE TABLE seq(num1 int,num2 text,num3 float) USING sequencefile; 

Этот файл последовательности имеет совместимость с Hive. Это может быть написано в Улей, как,

CREATE TABLE table1 (id int, name string, score float, type string) 
STORED AS sequencefile; 

ORC

ORC (Оптимизированный столбец строк) — это формат хранения столбцов из Hive.

Создание таблицы

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

CREATE TABLE optimized(num1 int,num2 text,num3 float) USING ORC; 

Формат ORC имеет следующие свойства —

  • orc.max.merge.distance — файл ORC читается, он сливается при уменьшении расстояния.

  • orc.stripe.size — это размер каждой полосы.

  • orc.buffer.size — по умолчанию 256 КБ.

  • orc.rowindex.stride — это шаг индекса ORC по количеству строк.

orc.max.merge.distance — файл ORC читается, он сливается при уменьшении расстояния.

orc.stripe.size — это размер каждой полосы.

orc.buffer.size — по умолчанию 256 КБ.

orc.rowindex.stride — это шаг индекса ORC по количеству строк.

Apache Tajo — операторы SQL

В предыдущей главе вы узнали, как создавать таблицы в Tajo. В этой главе рассказывается об операторе SQL в Tajo.

Создать таблицу Заявление

Прежде чем перейти к созданию таблицы, создайте текстовый файл «Students.csv» в пути к каталогу установки Tajo следующим образом:

students.csv

Я бы название Адрес Возраст Метки
1 Адам 23 New Street 21 90
2 Amit 12 Старая улица 13 95
3 боб 10 Cross Street 12 80
4 Дэвид 15 Экспресс Авеню 12 85
5 Эша 20 Garden Street 13 50
6 Ганга 25 Северная улица 12 55
7 Джек 2 Park Street 12 60
8 Лииной 24 Южная улица 12 70
9 Мэри 5 Вест Стрит 12 75
10 Питер 16 Парк Авеню 12 95

После того, как файл был создан, перейдите к терминалу и запустите сервер Tajo и оболочку один за другим.

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

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

запрос

default> create database sampledb; 
OK

Подключитесь к базе данных «sampledb», которая сейчас создается.

default> \c sampledb 
You are now connected to database "sampledb" as user user1”.

Затем создайте таблицу в «sampledb» следующим образом:

запрос

sampledb>  create external table mytable(id int,name text,address text,age int,mark int) 
   using text with('text.delimiter' = ',') location file:/Users/workspace/Tajo/students.csv’;

Результат

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

OK

Здесь создается внешняя таблица. Теперь вам просто нужно указать местоположение файла. Если вам нужно назначить таблицу из hdfs, используйте hdfs вместо файла.

Затем файл «student.csv» содержит значения, разделенные запятыми. Поле text.delimiter назначается с помощью ‘,’.

Вы успешно создали «mytable» в «sampledb».

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

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

запрос

sampledb> \d  
mytable  
sampledb> \d mytable

Результат

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

table name: sampledb.mytable 
table uri: file:/Users/workspace/Tajo/students.csv 
store type: TEXT 
number of rows: unknown 
volume: 261 B
Options: 
'timezone' = 'Asia/Kolkata' 
'text.null' = '\\N' 
'text.delimiter' = ','  
schema: 
id INT4 
name TEXT 
address TEXT 
age INT4 
mark INT4 

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

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

запрос

sampledb> select * from mytable;

Результат

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

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

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

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

Синтаксис

create table table1 (col1 int8, col2 text, col3 text);   
--schema should be same for target table schema  
Insert overwrite into table1 select * from table2;  
                     (or)  
Insert overwrite into LOCATION '/dir/subdir' select * from table; 

Оператор вставки Тахо похож на оператор INSERT INTO SELECT в SQL.

запрос

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

sampledb> create table test(sno int,name text,addr text,age int,mark int);  
OK 
sampledb> \d

Результат

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

mytable 
test

Вставить записи

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

запрос

sampledb> insert overwrite into test select * from mytable; 

Результат

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

Progress: 100%, response time: 0.518 sec

Здесь записи «mytable» перезаписывают таблицу «test». Если вы не хотите создавать таблицу «test», сразу же назначьте физический путь, как указано в альтернативной опции для запроса вставки.

Получить записи

Используйте следующий запрос, чтобы перечислить все записи в «тестовой» таблице:

запрос

sampledb> select * from test;

Результат

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

Fetch Records

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

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

Alter table table1 RENAME TO table2;

запрос

sampledb> alter table test rename to students;

Результат

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

OK

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

sampledb> \d  
mytable 
students

Теперь таблица «тест» заменена на таблицу «студенты».

Добавить столбец

Чтобы вставить новый столбец в таблицу «студентов», введите следующий синтаксис —

Alter table <table_name> ADD COLUMN <column_name> <data_type>

запрос

sampledb> alter table students add column grade text; 

Результат

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

OK

Установить свойство

Это свойство используется для изменения свойства таблицы.

запрос

sampledb> ALTER TABLE students SET PROPERTY 'compression.type' = 'RECORD',
   'compression.codec' = 'org.apache.hadoop.io.compress.Snappy Codec' ; 
OK

Здесь назначаются тип сжатия и свойства кодека.

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

запрос

ALTER TABLE students  SET PROPERTY ‘text.delimiter'=',';  
OK 

Результат

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

sampledb> \d students  
table name: sampledb.students 
table uri: file:/tmp/tajo-user1/warehouse/sampledb/students 
store type: TEXT 
number of rows: 10 
volume: 228 B 
Options: 
'compression.type' = 'RECORD' 
'timezone' = 'Asia/Kolkata' 
'text.null' = '\\N' 
'compression.codec' = 'org.apache.hadoop.io.compress.SnappyCodec' 
'text.delimiter' = ','  
schema: 
id INT4 
name TEXT 
addr TEXT 
age INT4 
mark INT4 
grade TEXT

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

Выберите заявление

Оператор SELECT используется для выбора данных из базы данных.

Синтаксис для оператора Select следующий:

SELECT [distinct [all]] * | <expression> [[AS] <alias>] [, ...] 
   [FROM <table reference> [[AS] <table alias name>] [, ...]] 
   [WHERE <condition>] 
   [GROUP BY <expression> [, ...]] 
   [HAVING <condition>] 
   [ORDER BY <expression> [ASC|DESC] [NULLS (FIRST|LAST)] [, …]]

Где пункт

Предложение Where используется для фильтрации записей из таблицы.

запрос

sampledb> select * from mytable where id > 5;

Результат

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

Где пункт

Запрос возвращает записи тех студентов, чей идентификатор больше 5.

запрос

sampledb> select * from mytable where name = ‘Peter’; 

Результат

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

Progress: 100%, response time: 0.117 sec 
 
  id,  name,  address,   age  
------------------------------- 
10,  Peter,  16 park avenue , 12 

Результат фильтрует только записи Питера.

Отличительная оговорка

Столбец таблицы может содержать повторяющиеся значения. Ключевое слово DISTINCT может использоваться для возврата только различных (разных) значений.

Синтаксис

SELECT DISTINCT column1,column2 FROM table_name;

запрос

sampledb> select distinct age from mytable; 

Результат

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

Progress: 100%, response time: 0.216 sec  
age 
------------------------------- 
13 
12 

Запрос возвращает отчетливый возраст студентов из mytable .

Группа по пункту

Предложение GROUP BY используется в сотрудничестве с оператором SELECT для объединения идентичных данных в группы.

Синтаксис

SELECT column1, column2 FROM table_name WHERE [ conditions ] GROUP BY column1, column2;

запрос

select age,sum(mark) as sumofmarks from mytable group by age;

Результат

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

age,  sumofmarks 
------------------------------- 
13,  145 
12,  610

Здесь столбец «mytable» имеет два типа возрастов — 12 и 13. Теперь запрос группирует записи по возрасту и выдает сумму оценок для соответствующих возрастов учащихся.

Имея пункт

Предложение HAVING позволяет указать условия, которые фильтруют, какие групповые результаты появляются в окончательных результатах. Предложение WHERE помещает условия в выбранные столбцы, тогда как предложение HAVING помещает условия в группы, созданные предложением GROUP BY.

Синтаксис

SELECT column1, column2 FROM table1 GROUP BY column HAVING [ conditions ]

запрос

sampledb> select age from mytable group by age  having  sum(mark) > 200; 

Результат

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

age 
------------------------------- 
12 

Запрос группирует записи по возрасту и возвращает возраст, когда сумма результата условия (отметка)> 200.

Заказать по пункту

Предложение ORDER BY используется для сортировки данных в порядке возрастания или убывания на основе одного или нескольких столбцов. По умолчанию база данных Tajo сортирует результаты запроса в порядке возрастания.

Синтаксис

SELECT column-list FROM table_name  
[WHERE condition]  
[ORDER BY column1, column2, .. columnN] [ASC | DESC]; 

запрос

sampledb> select * from mytable where mark > 60 order by name desc; 

Результат

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

Заказ по пункту

Запрос возвращает имена тех учеников в порядке убывания, оценки которых превышают 60.

Создать указатель

Оператор CREATE INDEX используется для создания индексов в таблицах. Индекс используется для быстрого поиска данных. Текущая версия поддерживает индекс только для простых текстовых форматов, хранящихся в HDFS.

Синтаксис

CREATE INDEX [ name ] ON table_name ( { column_name | ( expression ) }

запрос

create index student_index on mytable(id);

Результат

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

id 
——————————————— 

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

default> \d mytable  
table name: default.mytable 
table uri: file:/Users/deiva/workspace/Tajo/students.csv 
store type: TEXT 
number of rows: unknown  
volume: 307 B 
Options: 
   'timezone' = 'Asia/Kolkata' 
   'text.null' = '\\N' 
   'text.delimiter' = ','  
schema: 
id INT4 
name TEXT 
address TEXT 
age INT4 
mark INT4   
Indexes:  
"student_index" TWO_LEVEL_BIN_TREE (id ASC NULLS LAST ) 

Здесь метод TWO_LEVEL_BIN_TREE используется по умолчанию в Тахо.

Выписка со стола

Оператор удаления таблицы используется для удаления таблицы из базы данных.

Синтаксис

drop table table name;

запрос

sampledb> drop table mytable;

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

sampledb> \d mytable;

Результат

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

ERROR: relation 'mytable' does not exist 

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

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

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

Функции агрегации

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

S.No. Описание функции
1 Средний (ехр)

Усредняет столбец всех записей в источнике данных.

2 CORR (выражение1, выражение2)

Возвращает коэффициент корреляции между набором числовых пар.

3 COUNT ()

Возвращает количество строк.

4 MAX (выражение)

Возвращает наибольшее значение выбранного столбца.

5 MIN (выражение)

Возвращает наименьшее значение выбранного столбца.

6 SUM (выражение)

Возвращает сумму данного столбца.

7 LAST_VALUE (выражение)

Возвращает последнее значение данного столбца.

Усредняет столбец всех записей в источнике данных.

Возвращает коэффициент корреляции между набором числовых пар.

Возвращает количество строк.

Возвращает наибольшее значение выбранного столбца.

Возвращает наименьшее значение выбранного столбца.

Возвращает сумму данного столбца.

Возвращает последнее значение данного столбца.

Оконная функция

Функции Window выполняются для набора строк и возвращают одно значение для каждой строки из запроса. Термин окно имеет значение набора строк для функции.

Функция Window в запросе определяет окно с помощью предложения OVER ().

Предложение OVER () имеет следующие возможности:

  • Определяет оконные разбиения для формирования групп строк. (Раздел PARTITION BY)
  • Заказывает строки внутри раздела. (Предложение ORDER BY)

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

функция Тип возврата Описание
ранг() ИНТ Возвращает ранг текущей строки с пробелами.
номер_строки () ИНТ Возвращает текущую строку в своем разделе, считая от 1.
привести (значение [, смещение целое [, по умолчанию любой]]) То же, что и тип ввода Возвращает значение, оцененное в строке, которая смещена в строки после текущей строки в разделе. Если такой строки нет, будет возвращено значение по умолчанию.
лаг (значение [, целое смещение [, по умолчанию любое]]) То же, что и тип ввода Возвращает значение, оцененное в строке, которая смещена на строки перед текущей строкой в ​​разделе.
FIRST_VALUE (значение) То же, что и тип ввода Возвращает первое значение входных строк.
last_value (значение) То же, что и тип ввода Возвращает последнее значение входных строк.

Apache Tajo — SQL-запросы

В этой главе рассказывается о следующих важных запросах.

  • Предикаты
  • объяснять
  • Присоединиться

Давайте продолжим и выполним запросы.

Предикаты

Предикат — это выражение, которое используется для оценки значений true / false и UNKNOWN. Предикаты используются в условии поиска предложений WHERE, предложений HAVING и других конструкций, где требуется логическое значение.

Предикат IN

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

Синтаксис

IN::= 
<expression to test> [NOT] IN (<subquery>) 
| (<expression1>,...)

запрос

select id,name,address from mytable where id in(2,3,4);

Результат

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

id,  name,   address 
------------------------------- 
2,  Amit,  12 old street 
3,  Bob,   10 cross street 
4,  David, 15 express avenue 

Запрос возвращает записи из mytable для студентов с номерами 2,3 и 4.

запрос

select id,name,address from mytable where id not in(2,3,4);

Результат

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

id,  name,  address 
------------------------------- 
1,  Adam,   23 new street 
5,  Esha,   20 garden street 
6,  Ganga,  25 north street 
7,  Jack,   2 park street 
8,  Leena,  24 south street 
9,  Mary,   5 west street 
10, Peter,  16 park avenue 

Вышеприведенный запрос возвращает записи из mytable, где студентов нет в 2,3 и 4.

Как предикат

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

Шаблон может содержать любую комбинацию подстановочных знаков, таких как —

  • Символ подчеркивания (_), который можно использовать вместо любого отдельного символа в значении для проверки.

  • Знак процента (%), который заменяет любую строку из нуля или более символов в тестируемом значении.

Символ подчеркивания (_), который можно использовать вместо любого отдельного символа в значении для проверки.

Знак процента (%), который заменяет любую строку из нуля или более символов в тестируемом значении.

Синтаксис

LIKE::= 
<expression for calculating the string value> 
[NOT] LIKE 
<expression for calculating the string value> 
[ESCAPE <symbol>] 

запрос

select * from mytable where name like ‘A%'; 

Результат

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

id,  name,  address,     age,  mark 
------------------------------- 
1,  Adam,  23 new street,  12,  90 
2,  Amit,  12 old street,  13,  95

Запрос возвращает записи из таблицы тех учеников, имена которых начинаются с буквы «А».

запрос

select * from mytable where name like ‘_a%'; 

Результат

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

id,  name,  address,    age,  mark 
——————————————————————————————————————- 
4,  David,  15 express avenue,  12,  85 
6,  Ganga,  25 north street,    12,  55 
7,  Jack,  2 park street,       12,  60 
9,  Mary,  5 west street,       12,  75 

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

Использование значения NULL в условиях поиска

Давайте теперь разберемся, как использовать NULL Value в условиях поиска.

Синтаксис

Predicate  
IS [NOT] NULL 

запрос

select name from mytable where name is not null; 

Результат

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

name 
------------------------------- 
Adam 
Amit 
Bob 
David 
Esha 
Ganga 
Jack 
Leena 
Mary 
Peter  
(10 rows, 0.076 sec, 163 B selected) 

Здесь результат равен true, поэтому он возвращает все имена из таблицы.

запрос

Теперь давайте проверим запрос с условием NULL.

default> select name from mytable where name is null; 

Результат

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

name 
------------------------------- 
(0 rows, 0.068 sec, 0 B selected) 

объяснять

Объяснение используется для получения плана выполнения запроса. Он показывает логическое и глобальное выполнение плана оператора.

Логический план Query

explain select * from mytable;  
explain 
-------------------------------  
   => target list: default.mytable.id (INT4), default.mytable.name (TEXT), 
      default.mytable.address (TEXT), default.mytable.age (INT4), default.mytable.mark (INT4) 
   
   => out schema: {
   (5) default.mytable.id (INT4), default.mytable.name (TEXT), default.mytable.address (TEXT), 
      default.mytable.age (INT4), default.mytable.mark (INT4)
   } 
   
   => in schema: {
	(5) default.mytable.id (INT4), default.mytable.name (TEXT), default.mytable.address (TEXT), 
      default.mytable.age (INT4), default.mytable.mark (INT4)
   }

Результат

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

объяснять

Результат запроса показывает формат логического плана для данной таблицы. Логический план возвращает следующие три результата —

  • Целевой список
  • Вне схемы
  • В схеме

Глобальный план запроса

explain global select * from mytable;  
explain 
------------------------------- 
------------------------------------------------------------------------------- 
Execution Block Graph (TERMINAL - eb_0000000000000_0000_000002) 
------------------------------------------------------------------------------- 
|-eb_0000000000000_0000_000002 
   |-eb_0000000000000_0000_000001 
------------------------------------------------------------------------------- 
Order of Execution 
------------------------------------------------------------------------------- 
1: eb_0000000000000_0000_000001 
2: eb_0000000000000_0000_000002 
-------------------------------------------------------------------------------  
======================================================= 
Block Id: eb_0000000000000_0000_000001 [ROOT] 
=======================================================  
SCAN(0) on default.mytable 
   
   => target list: default.mytable.id (INT4), default.mytable.name (TEXT), 
      default.mytable.address (TEXT), default.mytable.age (INT4), default.mytable.mark (INT4) 
   
   => out schema: {
	(5) default.mytable.id (INT4), default.mytable.name (TEXT),default.mytable.address (TEXT), 
      default.mytable.age (INT4), default.mytable.mark (INT4)
   } 
   
   => in schema: {
	(5) default.mytable.id (INT4), default.mytable.name (TEXT), default.mytable.address (TEXT), 
      default.mytable.age (INT4), default.mytable.mark (INT4)
   }  
======================================================= 
Block Id: eb_0000000000000_0000_000002 [TERMINAL] 
======================================================= 
(24 rows, 0.065 sec, 0 B selected) 

Результат

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

Глобальный план

Здесь Глобальный план показывает идентификатор блока выполнения, порядок выполнения и его информацию.

присоединяется

Соединения SQL используются для объединения строк из двух или более таблиц. Ниже приведены различные типы соединений SQL:

  • Внутреннее соединение
  • {LEFT | ПРАВО | FULL} НАРУЖНОЕ СОЕДИНЕНИЕ
  • Перекрестное соединение
  • Самостоятельное присоединение
  • Естественное соединение

Рассмотрим следующие две таблицы для выполнения операций соединения.

Таблица 1 — Клиенты

Я бы название Адрес Возраст
1 Клиент 1 23 Олд Стрит 21
2 Клиент 2 12 New Street 23
3 Клиент 3 10 Экспресс Авеню 22
4 Клиент 4 15 Экспресс Авеню 22
5 Клиент 5 20 Garden Street 33
6 Клиент 6 21 Северная улица 25

Table2 — customer_order

Я бы Номер заказа Emp Id
1 1 101
2 2 102
3 3 103
4 4 104
5 5 105

Давайте теперь продолжим и выполним операции объединения SQL над двумя приведенными выше таблицами.

Внутреннее соединение

Внутреннее объединение выбирает все строки из обеих таблиц, когда есть совпадение между столбцами в обеих таблицах.

Синтаксис

SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;

запрос

default> select c.age,c1.empid from customers c inner join customer_order c1 on c.id = c1.id; 

Результат

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

age,  empid 
------------------------------- 
21,  101 
23,  102 
22,  103 
22,  104 
33,  105 

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

Левое внешнее соединение

В левом внешнем соединении сохраняются все строки «левой» таблицы, независимо от того, есть ли строка в «правой» таблице или нет.

запрос

select c.name,c1.empid from customers c left outer join customer_order c1 on c.id = c1.id;

Результат

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

name,       empid 
------------------------------- 
customer1,  101 
customer2,  102 
customer3,  103 
customer4,  104 
customer5,  105 
customer6,

Здесь левое внешнее объединение возвращает строки столбцов имени из таблицы customer (слева) и строки соответствия столбцов empid из таблицы customer_order (справа).

Правое внешнее соединение

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

запрос

select c.name,c1.empid from customers c right outer join customer_order c1 on c.id = c1.id;

Результат

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

name,      empid 
------------------------------- 
customer1,  101 
customer2,  102 
customer3,  103 
customer4,  104 
customer5,  105

Здесь правое внешнее соединение возвращает строки empid из таблицы customer_order (справа) и сопоставленные строки столбца name из таблицы клиентов.

Полное внешнее соединение

При полном внешнем объединении сохраняются все строки как левой, так и правой таблицы.

запрос

select * from customers c full outer join customer_order c1 on c.id = c1.id;

Результат

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

Полное внешнее соединение

Запрос возвращает все совпадающие и несовпадающие строки из таблиц customer и customer_order.

Перекрестное соединение

Это возвращает декартово произведение наборов записей из двух или более объединенных таблиц.

Синтаксис

SELECT *  FROM table1  CROSS JOIN table2;

запрос

select orderid,name,address from customers,customer_order;

Результат

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

Перекрестное соединение

Приведенный выше запрос возвращает декартово произведение таблицы.

Natural Join

Природное соединение не использует оператор сравнения. Он не объединяет способ декартовых произведений. Мы можем выполнить естественное соединение, только если между этими двумя отношениями существует хотя бы один общий атрибут.

Синтаксис

SELECT * FROM table1 NATURAL JOIN table2;

запрос

select * from customers natural join customer_order; 

Результат

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

Natural Join

Здесь существует один общий идентификатор столбца, который существует между двумя таблицами. Используя этот общий столбец, Natural Join объединяет обе таблицы.

Самостоятельное присоединение

SQL SELF JOIN используется для соединения таблицы с самим собой, как если бы эта таблица была двумя таблицами, временно переименовывая хотя бы одну таблицу в операторе SQL.

Синтаксис

SELECT a.column_name, b.column_name...  
FROM table1 a, table1 b  
WHERE a.common_filed = b.common_field  

запрос

default> select c.id,c1.name from customers c, customers c1 where c.id = c1.id; 

Результат

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

id,   name 
------------------------------- 
1,   customer1 
2,   customer2 
3,   customer3 
4,   customer4 
5,   customer5 
6,   customer6 

Запрос присоединяет таблицу клиентов к себе.

Apache Tajo — Плагины для хранения

Тахо поддерживает различные форматы хранения. Чтобы зарегистрировать конфигурацию плагина хранилища, вы должны добавить изменения в файл конфигурации «storage-site.json».

хранение site.json

Структура определяется следующим образом —

{ 
   "storages": { 
      “storage plugin name“: { 
         "handler": "${class name}”, "default-format": “plugin name" 
      } 
   } 
}

Каждый экземпляр хранилища идентифицируется по URI.

PostgreSQL Storage Handler

Tajo поддерживает обработчик хранилища PostgreSQL. Это позволяет пользователям запрашивать доступ к объектам базы данных в PostgreSQL. Это стандартный обработчик хранилища в Tajo, поэтому вы можете легко его настроить.

конфигурация

{ 
   "spaces": {  
      "postgre": {  
         "uri": "jdbc:postgresql://hostname:port/database1"  
         "configs": {  
            "mapped_database": “sampledb”  
            "connection_properties": { 
               "user":“tajo", "password": "pwd" 
            } 
         } 
      } 
   } 
} 		  

Здесь «database1» относится к базе данных postgreSQL, которая отображается на базу данных «sampledb» в Тахо.

Apache Tajo — интеграция с HBase

Apache Tajo поддерживает интеграцию HBase. Это позволяет нам получить доступ к таблицам HBase в Tajo. HBase — это распределенная столбцово-ориентированная база данных, построенная на основе файловой системы Hadoop. Он является частью экосистемы Hadoop, которая обеспечивает случайный доступ в режиме реального времени для чтения / записи данных в файловой системе Hadoop. Следующие шаги необходимы для настройки интеграции HBase.

Задать переменную среды

Добавьте следующие изменения в файл «conf / tajo-env.sh».

$ vi conf/tajo-env.sh  
# HBase home directory. It is opitional but is required mandatorily to use HBase. 
# export HBASE_HOME = path/to/HBase

После того, как вы включили путь HBase, Tajo установит для файла библиотеки HBase путь к классу.

Создать внешнюю таблицу

Создайте внешнюю таблицу, используя следующий синтаксис —

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] <table_name> [(<column_name> <data_type>, ... )] 
USING hbase WITH ('table' = '<hbase_table_name>' 
, 'columns' = ':key,<column_family_name>:<qualifier_name>, ...' 
, 'hbase.zookeeper.quorum' = '<zookeeper_address>' 
, 'hbase.zookeeper.property.clientPort' = '<zookeeper_client_port>') 
[LOCATION 'hbase:zk://<hostname>:<port>/'] ;

Для доступа к таблицам HBase необходимо настроить расположение табличного пространства.

Вот,

  • Таблица — Установить имя таблицы источника hbase. Если вы хотите создать внешнюю таблицу, эта таблица должна существовать в HBase.

  • Столбцы — Ключ относится к ключу строки HBase. Количество записей в столбцах должно быть равно количеству столбцов таблицы Tajo.

  • hbase.zookeeper.quorum — устанавливает адрес кворума zookeeper.

  • hbase.zookeeper.property.clientPort — устанавливает клиентский порт zookeeper.

Таблица — Установить имя таблицы источника hbase. Если вы хотите создать внешнюю таблицу, эта таблица должна существовать в HBase.

Столбцы — Ключ относится к ключу строки HBase. Количество записей в столбцах должно быть равно количеству столбцов таблицы Tajo.

hbase.zookeeper.quorum — устанавливает адрес кворума zookeeper.

hbase.zookeeper.property.clientPort — устанавливает клиентский порт zookeeper.

запрос

CREATE EXTERNAL TABLE students (rowkey text,id int,name text) 
USING hbase WITH ('table' = 'students', 'columns' = ':key,info:id,content:name') 
LOCATION 'hbase:zk://<hostname>:<port>/';

Здесь поле «Путь к местоположению» устанавливает идентификатор порта клиента zookeeper. Если вы не установите порт, Tajo будет ссылаться на свойство файла hbase-site.xml.

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

Вы можете запустить интерактивную оболочку HBase с помощью команды «hbase shell», как показано в следующем запросе.

запрос

/bin/hbase shell 

Результат

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

hbase(main):001:0>

Шаги для запроса HBase

Чтобы запросить HBase, вы должны выполнить следующие шаги —

Шаг 1 — Передайте следующие команды в оболочку HBase, чтобы создать «учебную» таблицу.

запрос

hbase(main):001:0> create ‘students’,{NAME => ’info’},{NAME => ’content’} 
put 'students', ‘row-01', 'content:name', 'Adam' 
put 'students', ‘row-01', 'info:id', '001' 
put 'students', ‘row-02', 'content:name', 'Amit' 
put 'students', ‘row-02', 'info:id', '002' 
put 'students', ‘row-03', 'content:name', 'Bob' 
put 'students', ‘row-03', 'info:id', ‘003' 

Шаг 2 — Теперь введите следующую команду в оболочке hbase, чтобы загрузить данные в таблицу.

main):001:0> cat ../hbase/hbase-students.txt | bin/hbase shell

Шаг 3 — Теперь вернитесь в оболочку Tajo и выполните следующую команду, чтобы просмотреть метаданные таблицы.

default> \d students;  

table name: default.students 
table path: 
store type: HBASE 
number of rows: unknown 
volume: 0 B 
Options: 
   'columns' = ':key,info:id,content:name' 
   'table' = 'students'  

schema: 
rowkey  TEXT 
id  INT4 
name TEXT

Шаг 4 — Чтобы получить результаты из таблицы, используйте следующий запрос —

запрос

default> select * from students

Результат

Приведенный выше запрос приведет к следующему результату —

rowkey,  id,  name 
------------------------------- 
row-01,  001,  Adam 
row-02,  002,  Amit 
row-03   003,  Bob 

Apache Tajo — интеграция с Hive

Тахо поддерживает HiveCatalogStore для интеграции с Apache Hive. Эта интеграция позволяет Tajo получать доступ к таблицам в Apache Hive.

Задать переменную среды

Добавьте следующие изменения в файл «conf / tajo-env.sh».

$ vi conf/tajo-env.sh  
export HIVE_HOME = /path/to/hive

После того, как вы включили путь Hive, Тахо установит в файле библиотеки Hive путь к классам.

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

Добавьте следующие изменения в файл «conf / catalog-site.xml».

$ vi conf/catalog-site.xml  
<property> 
   <name>tajo.catalog.store.class</name> 
   <value>org.apache.tajo.catalog.store.HiveCatalogStore</value> 
</property>

После настройки HiveCatalogStore вы можете получить доступ к таблице Hive в Tajo.

Apache Tajo — интеграция OpenStack Swift

Swift — это распределенное и согласованное хранилище объектов / блобов. Swift предлагает программное обеспечение облачного хранилища, так что вы можете хранить и извлекать много данных с помощью простого API. Тахо поддерживает интеграцию Swift.

Ниже приведены предварительные условия интеграции Swift —

  • стриж
  • Hadoop

Core-site.xml

Добавьте следующие изменения в файл hadoop «core-site.xml» —

<property> 
   <name>fs.swift.impl</name> 
   <value>org.apache.hadoop.fs.swift.snative.SwiftNativeFileSystem</value> 
   <description>File system implementation for Swift</description> 
</property>  

<property> 
   <name>fs.swift.blocksize</name> 
   <value>131072</value> 
   <description>Split size in KB</description> 
</property> 

Это будет использоваться Hadoop для доступа к объектам Swift. После внесения всех изменений перейдите в каталог Tajo, чтобы установить переменную среды Swift.

конф / Tajo-env.h

Откройте файл конфигурации Tajo и добавьте переменную окружения set следующим образом:

$ vi conf/tajo-env.h  
export TAJO_CLASSPATH = $HADOOP_HOME/share/hadoop/tools/lib/hadoop-openstack-x.x.x.jar 

Теперь Тахо сможет запрашивать данные с помощью Swift.

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

Давайте создадим внешнюю таблицу для доступа к объектам Swift в Tajo следующим образом:

default> create external table swift(num1 int, num2 text, num3 float) 
   using text with ('text.delimiter' = '|') location 'swift://bucket-name/table1';

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

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

Apache Tajo предоставляет интерфейс JDBC для подключения и выполнения запросов. Мы можем использовать тот же интерфейс JDBC для подключения Tajo из нашего Java-приложения. Давайте теперь поймем, как подключить Tajo и выполнить команды в нашем примере Java-приложения с использованием интерфейса JDBC в этом разделе.

Скачать драйвер JDBC

Загрузите драйвер JDBC, перейдя по следующей ссылке — http://apache.org/dyn/closer.cgi/tajo/tajo-0.11.3/tajo-jdbc-0.11.3.jar .

Теперь файл «tajo-jdbc-0.11.3.jar» загружен на ваш компьютер.

Установить путь к классу

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

CLASSPATH = path/to/tajo-jdbc-0.11.3.jar:$CLASSPATH 

Подключиться к Тахо

Apache Tajo предоставляет драйвер JDBC в виде одного файла JAR, и он доступен @ /path/to/tajo/share/jdbc-dist/tajo-jdbc-0.11.3.jar .

Строка подключения для подключения Apache Tajo имеет следующий формат —

jdbc:tajo://host/
jdbc:tajo://host/database
jdbc:tajo://host:port/  
jdbc:tajo://host:port/database 

Вот,

  • host — имя хоста TajoMaster.

  • порт — номер порта, который слушает сервер. Номер порта по умолчанию — 26002.

  • база данных — имя базы данных. Имя базы данных по умолчанию — по умолчанию.

host — имя хоста TajoMaster.

порт — номер порта, который слушает сервер. Номер порта по умолчанию — 26002.

база данных — имя базы данных. Имя базы данных по умолчанию — по умолчанию.

Java-приложение

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

кодирование

import java.sql.*; 
import org.apache.tajo.jdbc.TajoDriver;  

public class TajoJdbcSample {  
   public static void main(String[] args) {  
      Connection connection = null; 
      Statement statement = null;  
      try {
         Class.forName("org.apache.tajo.jdbc.TajoDriver");  
         connection = DriverManager.getConnection(“jdbc:tajo://localhost/default");
         statement = connection.createStatement(); 
         String sql;  
         sql = "select * from mytable”; 
         // fetch records from mytable.  
         ResultSet resultSet = statement.executeQuery(sql);  
         while(resultSet.next()){  
            int id  = resultSet.getInt("id"); 
            String name = resultSet.getString("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(); 
      } 
   } 
}

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

компиляция

javac -cp /path/to/tajo-jdbc-0.11.3.jar:. TajoJdbcSample.java 

выполнение

java -cp /path/to/tajo-jdbc-0.11.3.jar:. TajoJdbcSample 

Результат

Приведенные выше команды будут генерировать следующий результат —

ID: 1; 
Name: Adam  

ID: 2; 
Name: Amit  

ID: 3; 
Name: Bob  

ID: 4; 
Name: David  

ID: 5; 
Name: Esha  

ID: 6; 
Name: Ganga 

ID: 7; 
Name: Jack  

ID: 8; 
Name: Leena  

ID: 9; 
Name: Mary  

ID: 10; 
Name: Peter

Apache Tajo — Пользовательские функции

Apache Tajo поддерживает пользовательские / пользовательские функции (UDF). Пользовательские функции могут быть созданы в Python.

Пользовательские функции — это просто простые функции Python с декоратором «@output_type (<tajo sql datatype>)» следующим образом:

@ouput_type(“integer”) 
def sum_py(a, b): 
   return a + b; 

Сценарии python с пользовательскими функциями можно зарегистрировать, добавив приведенную ниже конфигурацию в «tajosite.xml» .

<property> 
   <name>tajo.function.python.code-dir</name> 
   <value>file:///path/to/script1.py,file:///path/to/script2.py</value> 
</property>

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

select sum_py(10, 10) as pyfn; 

Apache Tajo также поддерживает определенные пользователем агрегатные функции, но не поддерживает определенные пользователем оконные функции.