Импала - Краткое руководство
Что такое Импала?
Impala - это механизм SQL-запросов MPP (Massive Parallel Processing) для обработки огромных объемов данных, хранящихся в кластере Hadoop. Это программное обеспечение с открытым исходным кодом, написанное на C ++ и Java. Он обеспечивает высокую производительность и низкую задержку по сравнению с другими механизмами SQL для Hadoop.
Другими словами, Impala - это самый высокопроизводительный механизм SQL (предоставляющий возможности СУБД), который обеспечивает самый быстрый способ доступа к данным, хранящимся в распределенной файловой системе Hadoop.
Почему Импала?
Impala сочетает в себе поддержку SQL и многопользовательскую производительность традиционной аналитической базы данных с масштабируемостью и гибкостью Apache Hadoop за счет использования стандартных компонентов, таких как HDFS, HBase, Metastore, YARN и Sentry.
С помощью Impala пользователи могут взаимодействовать с HDFS или HBase с помощью запросов SQL более быстрым способом по сравнению с другими механизмами SQL, такими как Hive.
Impala может читать почти все форматы файлов, такие как Parquet, Avro, RCFile, используемые Hadoop.
Impala использует те же метаданные, синтаксис SQL (Hive SQL), драйвер ODBC и пользовательский интерфейс (Hue Beeswax), что и Apache Hive, предоставляя знакомую и унифицированную платформу для пакетных запросов или запросов в реальном времени.
В отличие от Apache Hive, Impala is not based on MapReduce algorithms. Он реализует распределенную архитектуру на основеdaemon processes которые отвечают за все аспекты выполнения запросов, выполняемых на одних и тех же машинах.
Таким образом, сокращается время ожидания использования MapReduce, что делает Impala быстрее, чем Apache Hive.
Преимущества Импалы
Вот список некоторых отмеченных преимуществ Cloudera Impala.
Используя impala, вы можете обрабатывать данные, хранящиеся в HDFS, с молниеносной скоростью, используя традиционные знания SQL.
Поскольку обработка данных осуществляется там, где они находятся (в кластере Hadoop), преобразование и перемещение данных не требуется для данных, хранящихся в Hadoop, при работе с Impala.
Используя Impala, вы можете получить доступ к данным, которые хранятся в HDFS, HBase и Amazon s3, без знания Java (задания MapReduce). Вы можете получить к ним доступ, имея базовое представление о SQL-запросах.
Чтобы писать запросы в бизнес-инструментах, данные должны пройти через сложный цикл извлечения-преобразования-загрузки (ETL). Но с Impala эта процедура сокращается. Длительные этапы загрузки и реорганизации преодолеваются с помощью новых методов, таких какexploratory data analysis & data discovery ускоряя процесс.
Impala является пионером в использовании формата файлов Parquet, столбчатой структуры хранилища, оптимизированной для крупномасштабных запросов, типичных для сценариев хранилищ данных.
Особенности Импалы
Ниже приведены особенности cloudera Impala -
Impala доступна бесплатно как открытый исходный код по лицензии Apache.
Impala поддерживает обработку данных в памяти, т. Е. Получает доступ к данным, которые хранятся на узлах данных Hadoop, и анализирует их без перемещения данных.
Вы можете получить доступ к данным с помощью Impala, используя запросы, подобные SQL.
Impala обеспечивает более быстрый доступ к данным в HDFS по сравнению с другими механизмами SQL.
Используя Impala, вы можете хранить данные в таких системах хранения, как HDFS, Apache HBase и Amazon s3.
Вы можете интегрировать Impala с такими инструментами бизнес-аналитики, как Tableau, Pentaho, Micro strategy и Zoom data.
Impala поддерживает различные форматы файлов, такие как LZO, Sequence File, Avro, RCFile и Parquet.
Impala использует метаданные, драйвер ODBC и синтаксис SQL из Apache Hive.
Реляционные базы данных и Impala
Impala использует язык запросов, похожий на SQL и HiveQL. В следующей таблице описаны некоторые ключевые различия между SQL и языком запросов Impala.
Импала | Реляционные базы данных |
---|---|
Impala использует SQL-подобный язык запросов, похожий на HiveQL. | Реляционные базы данных используют язык SQL. |
В Impala нельзя обновлять или удалять отдельные записи. | В реляционных базах данных можно обновлять или удалять отдельные записи. |
Impala не поддерживает транзакции. | Реляционные базы данных поддерживают транзакции. |
Impala не поддерживает индексацию. | Реляционные базы данных поддерживают индексацию. |
Impala хранит и управляет большими объемами данных (петабайтами). | Реляционные базы данных обрабатывают меньшие объемы данных (терабайты) по сравнению с Impala. |
Улей, Hbase и Импала
Хотя Cloudera Impala использует тот же язык запросов, хранилище метаданных и пользовательский интерфейс, что и Hive, в некоторых аспектах он отличается от Hive и HBase. В следующей таблице представлен сравнительный анализ HBase, Hive и Impala.
HBase | Улей | Импала |
---|---|---|
HBase - это база данных хранилища с широкими столбцами, основанная на Apache Hadoop. Он использует концепции BigTable. | Hive - это программное обеспечение для хранения данных. Используя это, мы можем получать доступ и управлять большими распределенными наборами данных, построенными на Hadoop. | Impala - это инструмент для управления и анализа данных, хранящихся в Hadoop. |
Модель данных HBase - это хранилище с широкими столбцами. | Hive следует реляционной модели. | Impala следует реляционной модели. |
HBase разработан с использованием языка Java. | Hive разработан с использованием языка Java. | Impala разработана с использованием C ++. |
Модель данных HBase не имеет схемы. | Модель данных Hive основана на схеме. | Модель данных Impala основана на схеме. |
HBase предоставляет API Java, RESTful и Thrift. | Hive предоставляет JDBC, ODBC, Thrift API. | Impala предоставляет API JDBC и ODBC. |
Поддерживает такие языки программирования, как C, C #, C ++, Groovy, Java PHP, Python и Scala. | Поддерживает языки программирования, такие как C ++, Java, PHP и Python. | Impala поддерживает все языки, поддерживающие JDBC / ODBC. |
HBase обеспечивает поддержку триггеров. | Hive не поддерживает триггеры. | Impala не поддерживает триггеры. |
Все эти три базы данных -
Это базы данных NOSQL.
Доступен как открытый исходный код.
Поддержка сценариев на стороне сервера.
Следуйте свойствам ACID, таким как Durability и Concurrency.
Использовать sharding за partitioning.
Недостатки Импалы
Некоторые из недостатков использования Impala следующие:
- Impala не поддерживает сериализацию и десериализацию.
- Impala может читать только текстовые файлы, но не специальные двоичные файлы.
- Каждый раз, когда новые записи / файлы добавляются в каталог данных в HDFS, таблицу необходимо обновлять.
В этой главе объясняются предварительные требования для установки Impala, как загрузить, установить и настроить Impala в вашей системе.
Подобно Hadoop и его программному обеспечению экосистемы, нам необходимо установить Impala в операционной системе Linux. Поскольку Cloudera поставляла Impala, она доступна сCloudera Quick Start VM.
В этой главе описывается, как скачать Cloudera Quick Start VM и запускаем Импалу.
Скачивание Cloudera Quick Start VM
Следуйте инструкциям ниже, чтобы загрузить последнюю версию Cloudera QuickStartVM.
Шаг 1
Откройте домашнюю страницу сайта cloudera http://www.cloudera.com/. Вы получите страницу, как показано ниже.
Шаг 2
Щелкните значок Sign in на главной странице cloudera, которая перенаправит вас на страницу входа, как показано ниже.
Если вы еще не зарегистрировались, нажмите кнопку Register Now ссылка, которая даст вам Account Registrationформа. Зарегистрируйтесь там и войдите в учетную запись cloudera.
Шаг 3
После входа в систему откройте страницу загрузки веб-сайта cloudera, нажав на Downloads ссылка выделена на следующем снимке.
Шаг 4 - Загрузите QuickStartVM
Скачать cloudera QuickStartVM нажав на Download Now кнопка, как выделено на следующем снимке
Это перенаправит вас на страницу загрузки QuickStart VM.
Щелкните значок Get ONE NOW , примите лицензионное соглашение и нажмите кнопку отправки, как показано ниже.
Cloudera предоставляет совместимые с виртуальными машинами VMware, KVM и VIRTUALBOX. Выберите нужную версию. В нашем руководстве мы демонстрируемCloudera QuickStartVM установка с использованием виртуального окна, поэтому щелкните VIRTUALBOX DOWNLOAD кнопку, как показано на снимке ниже.
Начнется загрузка файла с именем cloudera-quickstart-vm-5.5.0-0-virtualbox.ovf который представляет собой файл образа виртуального ящика.
Импорт Cloudera QuickStartVM
После загрузки cloudera-quickstart-vm-5.5.0-0-virtualbox.ovfфайл, нам нужно импортировать его с помощью виртуального ящика. Для этого, прежде всего, вам необходимо установить виртуальный бокс в вашей системе. Следуйте инструкциям ниже, чтобы импортировать загруженный файл изображения.
Шаг 1
Скачайте виртуальную коробку по следующей ссылке и установите ее https://www.virtualbox.org/
Шаг 2
Откройте программное обеспечение виртуального ящика. НажмитеFile и выберите Import Appliance, как показано ниже.
Шаг 3
При нажатии Import Appliance, вы получите окно Импорт виртуального устройства. Выберите расположение загруженного файла изображения, как показано ниже.
После импорта Cloudera QuickStartVMобраз, запустите виртуальную машину. На этой виртуальной машине установлены Hadoop, cloudera Impala и все необходимое программное обеспечение. Снимок виртуальной машины показан ниже.
Запуск Impala Shell
Чтобы запустить Impala, откройте терминал и выполните следующую команду.
[cloudera@quickstart ~] $ impala-shell
Это запустит Impala Shell и отобразит следующее сообщение.
Starting Impala Shell without Kerberos authentication
Connected to quickstart.cloudera:21000
Server version: impalad version 2.3.0-cdh5.5.0 RELEASE (build
0c891d79aa38f297d244855a32f1e17280e2129b)
********************************************************************************
Welcome to the Impala shell. Copyright (c) 2015 Cloudera, Inc. All rights reserved.
(Impala Shell v2.3.0-cdh5.5.0 (0c891d7) built on Mon Nov 9 12:18:12 PST 2015)
Press TAB twice to see a list of available commands.
********************************************************************************
[quickstart.cloudera:21000] >
Note - Мы обсудим все команды impala-shell в следующих главах.
Редактор запросов Impala
В добавление к Impala shell, вы можете общаться с Impala с помощью браузера Hue. После установки CDH5 и запуска Impala, если вы откроете браузер, вы получите домашнюю страницу Cloudera, как показано ниже.
Теперь щелкните закладку Hue, чтобы открыть браузер Hue. Щелкнув по нему, вы увидите страницу входа в браузер Hue с учетными данными cloudera и cloudera.
Как только вы войдете в браузер Hue, вы увидите Мастер быстрого запуска браузера Hue, как показано ниже.
При нажатии на Query Editors В раскрывающемся меню вы увидите список редакторов, поддерживаемых Impala, как показано на следующем снимке экрана.
При нажатии Impala в раскрывающемся меню вы увидите редактор запросов Impala, как показано ниже.
Impala - это механизм выполнения запросов MPP (Massive Parallel Processing), который работает в ряде систем в кластере Hadoop. В отличие от традиционных систем хранения, impala отделена от своего механизма хранения. Он состоит из трех основных компонентов, а именно: демона Impala (Impalad) , государственного хранилища Impala и метаданных или хранилища метаданных Impala.
Демон Импалы ( Impalad )
Демон Импала (также известный как impalad) запускается на каждом узле, где установлена Impala. Он принимает запросы от различных интерфейсов, таких как оболочка impala, браузер оттенков и т. Д.… И обрабатывает их.
Всякий раз, когда запрос отправляется импаладу на конкретном узле, этот узел служит «coordinator node»Для этого запроса. Множественные запросы обслуживаются Impalad, работающим на других узлах. После принятия запроса Impalad читает и записывает в файлы данных и распараллеливает запросы, распределяя работу по другим узлам Impala в кластере Impala. Когда запросы обрабатываются в различных экземплярах Impalad , все они возвращают результат в центральный координирующий узел.
В зависимости от требований запросы могут быть отправлены на выделенный Impalad или с балансировкой нагрузки на другой Impalad в вашем кластере.
Государственный магазин Импала
У Impala есть еще один важный компонент, называемый хранилищем состояния Impala, который отвечает за проверку состояния каждого Impalad и затем частую передачу состояния каждого демона Impala другим демонам. Это может работать на том же узле, где работает сервер Impala или другой узел в кластере.
Имя процесса демона хранилища состояния Impala - Состояние хранится . Impalad сообщает о своем состоянии работоспособности демону хранилища состояний Impala, т. Е. О состоянии сохраненного состояния .
В случае отказа узла по какой-либо причине Statestore обновляет все другие узлы об этом сбое, и как только такое уведомление становится доступным для другого impalad , никакой другой демон Impala не назначает какие-либо дальнейшие запросы затронутому узлу.
Метаданные и магазин метаданных Impala
Метаданные и хранилище метаданных Impala - еще один важный компонент. Impala использует традиционные базы данных MySQL или PostgreSQL для хранения определений таблиц. Важные детали, такие как информация о таблицах и столбцах, а также определения таблиц, хранятся в централизованной базе данных, известной как мета-хранилище.
Каждый узел Impala кэширует все метаданные локально. При работе с очень большим объемом данных и / или множеством разделов получение метаданных, специфичных для таблицы, может занять значительное время. Таким образом, локально хранимый кеш метаданных помогает мгновенно предоставлять такую информацию.
Когда определение таблицы или данные таблицы обновляются, другие демоны Impala должны обновить свой кэш метаданных, извлекая последние метаданные, прежде чем отправлять новый запрос к рассматриваемой таблице.
Интерфейсы обработки запросов
Для обработки запросов Impala предоставляет три интерфейса, перечисленных ниже.
Impala-shell - После настройки Impala с помощью виртуальной машины Cloudera вы можете запустить оболочку Impala, набрав команду impala-shellв редакторе. Мы обсудим больше об оболочке Impala в следующих главах.
Hue interface- Вы можете обрабатывать запросы Impala с помощью браузера Hue. В браузере Hue у вас есть редактор запросов Impala, в котором вы можете вводить и выполнять запросы Impala. Чтобы получить доступ к этому редактору, прежде всего, вам необходимо войти в браузер Hue.
ODBC/JDBC drivers- Как и другие базы данных, Impala предоставляет драйверы ODBC / JDBC. Используя эти драйверы, вы можете подключаться к impala через языки программирования, которые поддерживают эти драйверы, и создавать приложения, обрабатывающие запросы в impala с использованием этих языков программирования.
Порядок выполнения запроса
Каждый раз, когда пользователи передают запрос, используя любой из предоставленных интерфейсов, он принимается одним из Impalads в кластере. Этот Импалад рассматривается как координатор для этого конкретного запроса.
После получения запроса координатор запроса проверяет, подходит ли запрос, используя Table Schemaиз метамагазина Hive. Позже он собирает информацию о местоположении данных, необходимых для выполнения запроса, из узла имени HDFS и отправляет эту информацию другим импаладам для выполнения запроса.
Все остальные демоны Impala читают указанный блок данных и обрабатывают запрос. Как только все демоны завершают свои задачи, координатор запросов собирает результат и доставляет его пользователю.
В предыдущих главах мы видели установку Impala с использованием cloudera и ее архитектуры.
- Оболочка Impala (командная строка)
- Оттенок (пользовательский интерфейс)
- ODBC и JDBC (сторонние библиотеки)
В этой главе объясняется, как запустить Impala Shell и различные параметры оболочки.
Справочник команд оболочки Impala
Команды оболочки Impala классифицируются как general commands, query specific options, и table and database specific options, как описано ниже.
Общие команды
- help
- version
- history
- оболочка (или)!
- connect
- выход | уволиться
Параметры запроса
- Set/unset
- Profile
- Explain
Параметры таблицы и базы данных
- Alter
- describe
- drop
- insert
- select
- show
- use
Запуск Impala Shell
Откройте терминал cloudera, войдите как суперпользователь и введите cloudera в качестве пароля, как показано ниже.
[cloudera@quickstart ~]$ su
Password: cloudera
[root@quickstart cloudera]#
Запустите оболочку Impala, набрав следующую команду -
[root@quickstart cloudera] # impala-shell
Starting Impala Shell without Kerberos authentication
Connected to quickstart.cloudera:21000
Server version: impalad version 2.3.0-cdh5.5.0 RELEASE
(build 0c891d79aa38f297d244855a32f1e17280e2129b)
*********************************************************************
Welcome to the Impala shell. Copyright (c) 2015 Cloudera, Inc. All rights reserved.
(Impala Shell v2.3.0-cdh5.5.0 (0c891d7) built on Mon Nov 9 12:18:12 PST 2015)
Want to know what version of Impala you're connected to? Run the VERSION command to
find out!
*********************************************************************
[quickstart.cloudera:21000] >
Импала - Команды общего назначения
Команды общего назначения Impala объяснены ниже -
команда помощи
В help Команда оболочки Impala дает вам список команд, доступных в Impala -
[quickstart.cloudera:21000] > help;
Documented commands (type help <topic>):
========================================================
compute describe insert set unset with version
connect explain quit show values use
exit history profile select shell tip
Undocumented commands:
=========================================
alter create desc drop help load summary
команда версии
В version команда дает вам текущую версию Impala, как показано ниже.
[quickstart.cloudera:21000] > version;
Shell version: Impala Shell v2.3.0-cdh5.5.0 (0c891d7) built on Mon Nov 9
12:18:12 PST 2015
Server version: impalad version 2.3.0-cdh5.5.0 RELEASE (build
0c891d79aa38f297d244855a32f1e17280e2129b)
команда истории
В historyКоманда Impala отображает последние 10 команд, выполненных в оболочке. Ниже приведен примерhistoryкоманда. Здесь мы выполнили 5 команд, а именно: версия, справка, показ, использование и история.
[quickstart.cloudera:21000] > history;
[1]:version;
[2]:help;
[3]:show databases;
[4]:use my_db;
[5]:history;
команда выхода / выхода
Вы можете выйти из оболочки Impala, используя quit или же exit команда, как показано ниже.
[quickstart.cloudera:21000] > exit;
Goodbye cloudera
команда подключения
В connectкоманда используется для подключения к данному экземпляру Impala. Если вы не укажете ни один экземпляр, он подключается к порту по умолчанию.21000 как показано ниже.
[quickstart.cloudera:21000] > connect;
Connected to quickstart.cloudera:21000
Server version: impalad version 2.3.0-cdh5.5.0 RELEASE (build
0c891d79aa38f297d244855a32f1e17280e2129b)
Специальные параметры запроса Impala
Специфичные для запроса команды Impala принимают запрос. Они объясняются ниже -
Объясните
В explain Команда возвращает план выполнения для данного запроса.
[quickstart.cloudera:21000] > explain select * from sample;
Query: explain select * from sample
+------------------------------------------------------------------------------------+
| Explain String |
+------------------------------------------------------------------------------------+
| Estimated Per-Host Requirements: Memory = 48.00MB VCores = 1 |
| WARNING: The following tables are missing relevant table and/or column statistics. |
| my_db.customers |
| 01:EXCHANGE [UNPARTITIONED] |
| 00:SCAN HDFS [my_db.customers] |
| partitions = 1/1 files = 6 size = 148B |
+------------------------------------------------------------------------------------+
Fetched 7 row(s) in 0.17s
Профиль
В profileКоманда отображает низкоуровневую информацию о последнем запросе. Эта команда используется для диагностики и настройки производительности запроса. Ниже приведен примерprofileкоманда. В этом сценарииprofile команда возвращает низкоуровневую информацию о explain запрос.
[quickstart.cloudera:21000] > profile;
Query Runtime Profile:
Query (id=164b1294a1049189:a67598a6699e3ab6):
Summary:
Session ID: e74927207cd752b5:65ca61e630ad3ad
Session Type: BEESWAX
Start Time: 2016-04-17 23:49:26.08148000 End Time: 2016-04-17 23:49:26.2404000
Query Type: EXPLAIN
Query State: FINISHED
Query Status: OK
Impala Version: impalad version 2.3.0-cdh5.5.0 RELEASE (build 0c891d77280e2129b)
User: cloudera
Connected User: cloudera
Delegated User:
Network Address:10.0.2.15:43870
Default Db: my_db
Sql Statement: explain select * from sample
Coordinator: quickstart.cloudera:22000
: 0ns
Query Timeline: 167.304ms
- Start execution: 41.292us (41.292us) - Planning finished: 56.42ms (56.386ms)
- Rows available: 58.247ms (1.819ms)
- First row fetched: 160.72ms (101.824ms)
- Unregister query: 166.325ms (6.253ms)
ImpalaServer:
- ClientFetchWaitTimer: 107.969ms
- RowMaterializationTimer: 0ns
Параметры, специфичные для таблиц и баз данных
В следующей таблице перечислены параметры, специфичные для таблиц и данных в Impala.
Старший Нет | Команда и объяснение |
---|---|
1 | Alter В alter команда используется для изменения структуры и имени таблицы в Impala. |
2 | Describe В describeКоманда Impala предоставляет метаданные таблицы. Он содержит такую информацию, как столбцы и их типы данных. Вdescribe команда имеет desc как короткий путь. |
3 | Drop В drop Команда используется для удаления конструкции из Impala, где конструкция может быть таблицей, представлением или функцией базы данных. |
4 | insert В insert команда Импалы привыкла,
|
5 | select В selectОператор используется для выполнения желаемой операции с определенным набором данных. Он определяет набор данных, над которым нужно выполнить какое-либо действие. Вы можете распечатать или сохранить (в файле) результат оператора select. |
6 | show В show Оператор Impala используется для отображения метахранилища различных конструкций, таких как таблицы, базы данных и таблицы. |
7 | use В use Оператор Impala используется для изменения текущего контекста на желаемую базу данных. |
Типы данных Impala
В следующей таблице описаны типы данных Impala.
Старший Нет | Тип данных и описание |
---|---|
1 | BIGINT В этом типе данных хранятся числовые значения, а диапазон этого типа данных составляет от -9223372036854775808 до 9223372036854775807. Этот тип данных используется в операторах create table и alter table. |
2 | BOOLEAN Этот тип данных хранит только true или же false values и используется в определении столбца оператора create table. |
3 | CHAR Этот тип данных является хранилищем фиксированной длины, он заполнен пробелами, вы можете хранить до максимальной длины 255. |
4 | DECIMAL Этот тип данных используется для хранения десятичных значений и используется в операторах create table и alter table. |
5 | DOUBLE Этот тип данных используется для хранения значений с плавающей запятой в диапазоне положительных или отрицательных 4,94065645841246544e-324d -1,79769313486231570e + 308. |
6 | FLOAT Этот тип данных используется для хранения типов данных с плавающей запятой одинарной точности в диапазоне положительных или отрицательных 1.40129846432481707e-45 .. 3.40282346638528860e + 38. |
7 | INT Этот тип данных используется для хранения 4-байтовых целых чисел в диапазоне от -2147483648 до 2147483647. |
8 | SMALLINT Этот тип данных используется для хранения 2-байтовых целых чисел в диапазоне от -32768 до 32767. |
9 | STRING Это используется для хранения строковых значений. |
10 | TIMESTAMP Этот тип данных используется для представления момента времени. |
11 | TINYINT Этот тип данных используется для хранения 1-байтового целочисленного значения в диапазоне от -128 до 127. |
12 | VARCHAR Этот тип данных используется для хранения символов переменной длины до максимальной длины 65 535. |
13 | ARRAY Это сложный тип данных, который используется для хранения переменного количества упорядоченных элементов. |
14 | Map Это сложный тип данных, который используется для хранения переменного количества пар ключ-значение. |
15 | Struct Это сложный тип данных, который используется для представления нескольких полей одного элемента. |
Комментарии в Impala
Комментарии в Impala аналогичны комментариям в SQL. Как правило, в языках программирования есть два типа комментариев, а именно однострочные комментарии и многострочные комментарии.
Single-line comments- Каждая строка, за которой следует "-", рассматривается в Impala как комментарий. Ниже приведен пример однострочного комментария в Impala.
-- Hello welcome to tutorials point.
Multiline comments - Все строки между /* и */в Impala рассматриваются как многострочные комментарии. Ниже приведен пример многострочного комментария в Impala.
/*
Hi this is an example
Of multiline comments in Impala
*/
Операторы в Impala аналогичны операторам в SQL. Обратитесь к нашему руководству по SQL, щелкнув следующую ссылкуsql-операторы.
Impala - Создание базы данных
В Impala база данных - это конструкция, которая содержит связанные таблицы, представления и функции в своих пространствах имен. Он представлен в виде дерева каталогов в HDFS; он содержит разделы таблиц и файлы данных. В этой главе объясняется, как создать базу данных в Impala.
Заявление CREATE DATABASE
В CREATE DATABASE Statement используется для создания новой базы данных в Impala.
Синтаксис
Ниже приводится синтаксис CREATE DATABASE Утверждение.
CREATE DATABASE IF NOT EXISTS database_name;
Вот, IF NOT EXISTSявляется необязательным предложением. Если мы используем это предложение, база данных с заданным именем будет создана, только если нет существующей базы данных с таким же именем.
пример
Ниже приводится пример create database statement. В этом примере мы создали базу данных с именемmy_database.
[quickstart.cloudera:21000] > CREATE DATABASE IF NOT EXISTS my_database;
При выполнении вышеуказанного запроса в cloudera impala-shell, вы получите следующий результат.
Query: create DATABASE my_database
Fetched 0 row(s) in 0.21s
Проверка
В SHOW DATABASES query предоставляет список баз данных в Impala, поэтому вы можете проверить, создана ли база данных, используя SHOWЗаявление БАЗЫ ДАННЫХ. Здесь вы можете наблюдать за вновь созданной базой данныхmy_db в списке.
[quickstart.cloudera:21000] > show databases;
Query: show databases
+-----------------------------------------------+
| name |
+-----------------------------------------------+
| _impala_builtins |
| default |
| my_db |
+-----------------------------------------------+
Fetched 3 row(s) in 0.20s
[quickstart.cloudera:21000] >
Путь Hdfs
Чтобы создать базу данных в файловой системе HDFS, вам необходимо указать место, в котором будет создана база данных.
CREATE DATABASE IF NOT EXISTS database_name LOCATION hdfs_path;
Создание базы данных с помощью Hue Browser
Откройте редактор запросов Impala и введите CREATE DATABASEзаявление в нем. После этого нажмите кнопку «Выполнить», как показано на следующем снимке экрана.
После выполнения запроса осторожно переместите курсор в верхнюю часть раскрывающегося меню, и вы найдете символ обновления. Если вы нажмете на символ обновления, список баз данных будет обновлен, и к нему будут применены последние изменения.
Проверка
Щелкните значок drop-down box под заголовком DATABASEв левой части редактора. Здесь вы можете увидеть список баз данных в системе. Здесь вы можете наблюдать за вновь созданной базой данныхmy_db как показано ниже.
Если вы внимательно понаблюдаете, вы увидите только одну базу данных, т.е. my_db в списке вместе с базой данных по умолчанию.
В DROP DATABASE StatementImpala используется для удаления базы данных из Impala. Перед удалением базы данных рекомендуется удалить из нее все таблицы.
Синтаксис
Ниже приводится синтаксис DROP DATABASE Утверждение.
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT |
CASCADE] [LOCATION hdfs_path];
Вот, IF EXISTSявляется необязательным предложением. Если мы используем это предложение, когда база данных с заданным именем существует, она будет удалена. А если базы данных с таким именем не существует, операция не выполняется.
пример
Ниже приводится пример DROP DATABASEзаявление. Предположим, у вас есть база данных в Impala с именемsample_database.
И, если вы проверите список баз данных с помощью SHOW DATABASES заявление, вы увидите в нем имя.
[quickstart.cloudera:21000] > SHOW DATABASES;
Query: show DATABASES
+-----------------------+
| name |
+-----------------------+
| _impala_builtins |
| default |
| my_db |
| sample_database |
+-----------------------+
Fetched 4 row(s) in 0.11s
Теперь вы можете удалить эту базу данных, используя DROP DATABASE Statement как показано ниже.
< DROP DATABASE IF EXISTS sample_database;
Это удалит указанную базу данных и даст вам следующий результат.
Query: drop DATABASE IF EXISTS sample_database;
Проверка
Вы можете проверить, удалена ли данная база данных, используя SHOW DATABASESзаявление. Здесь вы можете заметить, что база данных с именемsample_database удаляется из списка баз данных.
[quickstart.cloudera:21000] > SHOW DATABASES;
Query: show DATABASES
+----------------------+
| name |
+----------------------+
| _impala_builtins |
| default |
| my_db |
+----------------------+
Fetched 3 row(s) in 0.10s
[quickstart.cloudera:21000] >
Каскад
В общем, чтобы удалить базу данных, вам нужно удалить все таблицы в ней вручную. Если вы используете каскад, Impala удаляет таблицы в указанной базе данных перед ее удалением.
пример
Предположим, в Импале есть база данных с именем sample, и содержит две таблицы, а именно student и test. Если вы попытаетесь удалить эту базу данных напрямую, вы получите сообщение об ошибке, как показано ниже.
[quickstart.cloudera:21000] > DROP database sample;
Query: drop database sample
ERROR:
ImpalaRuntimeException: Error making 'dropDatabase' RPC to Hive Metastore:
CAUSED BY: InvalidOperationException: Database sample is not empty. One or more
tables exist.
С помощью cascade, вы можете удалить эту базу данных напрямую (без удаления ее содержимого вручную), как показано ниже.
[quickstart.cloudera:21000] > DROP database sample cascade;
Query: drop database sample cascade
Note - Вы не можете удалить «current database»В Импале. Следовательно, перед удалением базы данных вам необходимо убедиться, что текущий контекст установлен на базу данных, отличную от той, которую вы собираетесь удалить.
Удаление базы данных с помощью Hue Browser
Откройте редактор запросов Impala и введите DELETE DATABASEв нем и нажмите кнопку выполнения, как показано ниже. Предположим, есть три базы данных, а именно,my_db, my_database, и sample_databaseвместе с базой данных по умолчанию. Здесь мы удаляем базу данных с именем my_database.
После выполнения запроса аккуратно переместите курсор в верхнюю часть раскрывающегося меню. Затем вы найдете символ обновления, как показано на скриншоте ниже. Если вы нажмете на символ обновления, список баз данных будет обновлен, и к нему будут применены последние сделанные изменения.
Проверка
Нажми на drop down под заголовком DATABASEв левой части редактора. Здесь вы можете увидеть список баз данных в системе. Здесь вы можете наблюдать за вновь созданной базой данныхmy_db как показано ниже.
Если вы внимательно понаблюдаете, вы увидите только одну базу данных, т.е. my_db в списке вместе с базой данных по умолчанию.
После подключения к Impala необходимо выбрать одну из доступных баз данных. ВUSE DATABASE Statement of Impala используется для переключения текущего сеанса на другую базу данных.
Синтаксис
Ниже приводится синтаксис USE Утверждение.
USE db_name;
пример
Ниже приводится пример USE statement. Прежде всего, давайте создадим базу данных с именемsample_database как показано ниже.
> CREATE DATABASE IF NOT EXISTS sample_database;
Это создаст новую базу данных и даст вам следующий результат.
Query: create DATABASE IF NOT EXISTS my_db2
Fetched 0 row(s) in 2.73s
Если вы проверяете список баз данных с помощью SHOW DATABASES заявление, вы можете наблюдать в нем название вновь созданной базы данных.
> SHOW DATABASES;
Query: show DATABASES
+-----------------------+
| name |
+-----------------------+
| _impala_builtins |
| default |
| my_db |
| sample_database |
+-----------------------+
Fetched 4 row(s) in 0.11s
Теперь давайте переключим сеанс на вновь созданную базу данных (sample_database), используя USE Заявление, как показано ниже.
> USE sample_database;
Это изменит текущий контекст на sample_database и отобразит сообщение, как показано ниже.
Query: use sample_database
Выбор базы данных с помощью Hue Browser
В левой части Query Editor Impala вы найдете раскрывающееся меню, как показано на следующем снимке экрана.
Если вы щелкните раскрывающееся меню, вы найдете список всех баз данных в Impala, как показано ниже.
Просто выберите базу данных, для которой нужно изменить текущий контекст.
В CREATE TABLEОператор используется для создания новой таблицы в требуемой базе данных в Impala. Создание базовой таблицы включает в себя название таблицы и определение ее столбцов и типа данных каждого столбца.
Синтаксис
Ниже приводится синтаксис CREATE TABLEУтверждение. Вот,IF NOT EXISTSявляется необязательным предложением. Если мы используем это предложение, таблица с заданным именем создается, только если в указанной базе данных нет существующей таблицы с тем же именем.
create table IF NOT EXISTS database_name.table_name (
column1 data_type,
column2 data_type,
column3 data_type,
………
columnN data_type
);
CREATE TABLE - это ключевое слово, которое инструктирует систему базы данных создать новую таблицу. Уникальное имя или идентификатор таблицы следует за оператором CREATE TABLE. При желании вы можете указатьdatabase_name вместе с table_name.
пример
Ниже приведен пример оператора создания таблицы. В этом примере мы создали таблицу с именемstudent в базе данных my_db.
[quickstart.cloudera:21000] > CREATE TABLE IF NOT EXISTS my_db.student
(name STRING, age INT, contact INT );
При выполнении вышеуказанного оператора будет создана таблица с указанным именем, в которой будут отображаться следующие выходные данные.
Query: create table student (name STRING, age INT, phone INT)
Fetched 0 row(s) in 0.48s
Проверка
В show Tablesquery дает список таблиц в текущей базе данных в Impala. Следовательно, вы можете проверить, создана ли таблица, используяShow Tables заявление.
Прежде всего, вам нужно переключить контекст на базу данных, в которой существует требуемая таблица, как показано ниже.
[quickstart.cloudera:21000] > use my_db;
Query: use my_db
Затем, если вы получите список таблиц с помощью show tables запрос, вы можете наблюдать таблицу с именем student в нем, как показано ниже.
[quickstart.cloudera:21000] > show tables;
Query: show tables
+-----------+
| name |
+-----------+
| student |
+-----------+
Fetched 1 row(s) in 0.10s
Путь HDFS
Чтобы создать базу данных в файловой системе HDFS, вам необходимо указать место, где должна быть создана база данных, как показано ниже.
CREATE DATABASE IF NOT EXISTS database_name LOCATION hdfs_path;
Создание базы данных с помощью Hue Browser
Откройте редактор запросов impala и введите CREATE TableПостановка в нем. И нажмите кнопку «Выполнить», как показано на следующем снимке экрана.
После выполнения запроса осторожно переместите курсор в верхнюю часть раскрывающегося меню, и вы найдете символ обновления. Если вы щелкните символ обновления, список баз данных будет обновлен, и к нему будут применены последние сделанные изменения.
Проверка
Нажми на drop down под заголовком DATABASEв левой части редактора. Там вы можете увидеть список баз данных. Выберите базу данныхmy_db как показано ниже.
При выборе базы данных my_dbвы можете увидеть в нем список таблиц, как показано ниже. Здесь вы можете найти только что созданную таблицуstudent как показано ниже.
В INSERT В заявлении Импалы есть два пункта - into и overwrite. Вставить оператор сinto Предложение используется для добавления новых записей в существующую таблицу в базе данных.
Синтаксис
Есть два основных синтаксиса INSERT заявление следующим образом -
insert into table_name (column1, column2, column3,...columnN)
values (value1, value2, value3,...valueN);
Здесь column1, column2, ... columnN - это имена столбцов в таблице, в которые вы хотите вставить данные.
Вы также можете добавлять значения без указания имен столбцов, но для этого вам необходимо убедиться, что порядок значений соответствует порядку столбцов в таблице, как показано ниже.
Insert into table_name values (value1, value2, value2);
CREATE TABLE - это ключевое слово, сообщающее системе базы данных о необходимости создания новой таблицы. Уникальное имя или идентификатор таблицы следует за оператором CREATE TABLE. При желании вы можете указатьdatabase_name вместе с table_name.
пример
Предположим, мы создали таблицу с именем student в Impala, как показано ниже.
create table employee (Id INT, name STRING, age INT,address STRING, salary BIGINT);
Ниже приведен пример создания записи в таблице с именем employee.
[quickstart.cloudera:21000] > insert into employee
(ID,NAME,AGE,ADDRESS,SALARY)VALUES (1, 'Ramesh', 32, 'Ahmedabad', 20000 );
При выполнении вышеуказанного оператора запись вставляется в таблицу с именем employee отображается следующее сообщение.
Query: insert into employee (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Ramesh',
32, 'Ahmedabad', 20000 )
Inserted 1 row(s) in 1.32s
Вы можете вставить другую запись, не указывая имена столбцов, как показано ниже.
[quickstart.cloudera:21000] > insert into employee values (2, 'Khilan', 25,
'Delhi', 15000 );
При выполнении вышеуказанного оператора запись вставляется в таблицу с именем employee отображается следующее сообщение.
Query: insert into employee values (2, 'Khilan', 25, 'Delhi', 15000 )
Inserted 1 row(s) in 0.31s
Вы можете вставить еще несколько записей в таблицу сотрудников, как показано ниже.
Insert into employee values (3, 'kaushik', 23, 'Kota', 30000 );
Insert into employee values (4, 'Chaitali', 25, 'Mumbai', 35000 );
Insert into employee values (5, 'Hardik', 27, 'Bhopal', 40000 );
Insert into employee values (6, 'Komal', 22, 'MP', 32000 );
После вставки значений employee таблица в Impala будет выглядеть так, как показано ниже.
+----+----------+-----+-----------+--------+
| id | name | age | address | salary |
+----+----------+-----+-----------+--------+
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
| 2 | Khilan | 25 | Delhi | 15000 |
| 5 | Hardik | 27 | Bhopal | 40000 |
| 4 | Chaitali | 25 | Mumbai | 35000 |
| 3 | kaushik | 23 | Kota | 30000 |
| 6 | Komal | 22 | MP | 32000 |
+----+----------+-----+-----------+--------+
Перезапись данных в таблице
Мы можем перезаписать записи таблицы, используя предложение перезаписи. Перезаписанные записи будут безвозвратно удалены из таблицы. Ниже приводится синтаксис использования предложения перезаписи.
Insert overwrite table_name values (value1, value2, value2);
пример
Ниже приводится пример использования предложения overwrite.
[quickstart.cloudera:21000] > Insert overwrite employee values (1, 'Ram', 26,
'Vishakhapatnam', 37000 );
При выполнении вышеуказанного запроса данные таблицы будут перезаписаны указанной записью с отображением следующего сообщения.
Query: insert overwrite employee values (1, 'Ram', 26, 'Vishakhapatnam', 37000 )
Inserted 1 row(s) in 0.31s
Проверив таблицу, вы можете заметить, что все записи таблицы employee перезаписываются новыми записями, как показано ниже.
+----+------+-----+---------------+--------+
| id | name | age | address | salary |
+----+------+-----+---------------+--------+
| 1 | Ram | 26 | Vishakhapatnam| 37000 |
+----+------+-----+---------------+--------+
Вставка данных с помощью Hue Browser
Откройте редактор запросов Impala и введите insertПостановка в нем. И нажмите кнопку «Выполнить», как показано на следующем снимке экрана.
После выполнения запроса / оператора эта запись добавляется в таблицу.
Импала SELECTОператор используется для выборки данных из одной или нескольких таблиц в базе данных. Этот запрос возвращает данные в виде таблиц.
Синтаксис
Ниже приведен синтаксис Импалы. select заявление.
SELECT column1, column2, columnN from table_name;
Здесь столбец1, столбец2 ... - это поля таблицы, значения которых вы хотите получить. Если вы хотите получить все поля, доступные в поле, вы можете использовать следующий синтаксис -
SELECT * FROM table_name;
пример
Предположим, у нас есть таблица с именем customers в Impala со следующими данными -
ID NAME AGE ADDRESS SALARY
--- ------- --- ---------- -------
1 Ramesh 32 Ahmedabad 20000
2 Khilan 25 Delhi 15000
3 Hardik 27 Bhopal 40000
4 Chaitali 25 Mumbai 35000
5 kaushik 23 Kota 30000
6 Komal 22 Mp 32000
Вы можете получить id, name, и age всех записей customers таблица с использованием select заявление, как показано ниже -
[quickstart.cloudera:21000] > select id, name, age from customers;
При выполнении вышеуказанного запроса Impala извлекает идентификатор, имя, возраст всех записей из указанной таблицы и отображает их, как показано ниже.
Query: select id,name,age from customers
+----+----------+-----+
| id | name | age |
| 1 | Ramesh | 32 |
| 2 | Khilan | 25 |
| 3 | Hardik | 27 |
| 4 | Chaitali | 25 |
| 5 | kaushik | 23 |
| 6 | Komal | 22 |
+----+----------+-----+
Fetched 6 row(s) in 0.66s
Вы также можете получить all записи из customers таблица с использованием select запрос, как показано ниже.
[quickstart.cloudera:21000] > select name, age from customers;
Query: select * from customers
При выполнении вышеуказанного запроса Impala извлекает и отображает все записи из указанной таблицы, как показано ниже.
+----+----------+-----+-----------+--------+
| id | name | age | address | salary |
+----+----------+-----+-----------+--------+
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
| 2 | Khilan | 25 | Delhi | 15000 |
| 3 | Hardik | 27 | Bhopal | 40000 |
| 4 | Chaitali | 25 | Mumbai | 35000 |
| 5 | kaushik | 23 | Kota | 30000 |
| 6 | Komal | 22 | MP | 32000 |
+----+----------+-----+-----------+--------+
Fetched 6 row(s) in 0.66s
Получение записей с использованием оттенка
Откройте редактор запросов Impala и введите selectПостановка в нем. И нажмите кнопку «Выполнить», как показано на следующем снимке экрана.
Если после выполнения запроса вы прокрутите вниз и выберите Results На вкладке вы можете увидеть список записей указанной таблицы, как показано ниже.
В describeОператор в Impala используется для описания таблицы. Результат этого оператора содержит информацию о таблице, такую как имена столбцов и их типы данных.
Синтаксис
Ниже приведен синтаксис Импалы. describe заявление.
Describe table_name;
пример
Например, предположим, что у нас есть таблица с именем customer в Impala со следующими данными -
ID NAME AGE ADDRESS SALARY
--- --------- ----- ----------- -----------
1 Ramesh 32 Ahmedabad 20000
2 Khilan 25 Delhi 15000
3 Hardik 27 Bhopal 40000
4 Chaitali 25 Mumbai 35000
5 kaushik 23 Kota 30000
6 Komal 22 Mp 32000
Вы можете получить описание customer таблица с использованием describe заявление, как показано ниже -
[quickstart.cloudera:21000] > describe customer;
При выполнении вышеуказанного запроса Impala извлекает metadata указанной таблицы и отображает ее, как показано ниже.
Query: describe customer
+---------+--------+---------+
| name | type | comment |
+---------+--------+---------+
| id | int | |
| name | string | |
| age | int | |
| address | string | |
| salary | bigint | |
+---------+--------+---------+
Fetched 5 row(s) in 0.51s
Описание записей с помощью оттенка
Откройте редактор запросов Impala и введите describe в нем и нажмите кнопку выполнения, как показано на следующем снимке экрана.
Если после выполнения запроса вы прокрутите вниз и выберите Results На вкладке вы можете увидеть метаданные таблицы, как показано ниже.
Оператор Alter table в Impala используется для внесения изменений в данную таблицу. Используя этот оператор, мы можем добавлять, удалять или изменять столбцы в существующей таблице, а также переименовывать ее.
В этой главе объясняются различные типы операторов alter с синтаксисом и примерами. Прежде всего предположим, что у нас есть таблица с именемcustomers в my_db база данных в Impala со следующими данными
ID NAME AGE ADDRESS SALARY
--- --------- ----- ----------- --------
1 Ramesh 32 Ahmedabad 20000
2 Khilan 25 Delhi 15000
3 Hardik 27 Bhopal 40000
4 Chaitali 25 Mumbai 35000
5 kaushik 23 Kota 30000
6 Komal 22 Mp 32000
И, если вы получите список таблиц в базе данных my_db, вы можете найти customers таблицу в нем, как показано ниже.
[quickstart.cloudera:21000] > show tables;
Query: show tables
+-----------+
| name |
+-----------+
| customers |
| employee |
| student |
| student1 |
+-----------+
Изменение имени таблицы
Синтаксис
Базовый синтаксис ALTER TABLE переименовать существующую таблицу следующим образом -
ALTER TABLE [old_db_name.]old_table_name RENAME TO [new_db_name.]new_table_name
пример
Ниже приведен пример изменения имени таблицы с помощью alterзаявление. Здесь мы меняем название таблицыcustomers пользователям.
[quickstart.cloudera:21000] > ALTER TABLE my_db.customers RENAME TO my_db.users;
После выполнения вышеуказанного запроса Impala изменяет имя таблицы по мере необходимости, отображая следующее сообщение.
Query: alter TABLE my_db.customers RENAME TO my_db.users
Вы можете проверить список таблиц в текущей базе данных, используя show tablesзаявление. Вы можете найти таблицу с именемusers вместо customers.
Query: show tables
+----------+
| name |
+----------+
| employee |
| student |
| student1 |
| users |
+----------+
Fetched 4 row(s) in 0.10s
Добавление столбцов в таблицу
Синтаксис
Базовый синтаксис ALTER TABLE добавить столбцы в существующую таблицу следующим образом:
ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])
пример
Следующий запрос - это пример, демонстрирующий, как добавить столбцы в существующую таблицу. Здесь мы добавляем два столбца account_no и phone_number (оба имеют тип данных bigint) вusers стол.
[quickstart.cloudera:21000] > ALTER TABLE users ADD COLUMNS (account_no BIGINT,
phone_no BIGINT);
При выполнении вышеуказанного запроса он добавит указанные столбцы в таблицу с именем student, отображая следующее сообщение.
Query: alter TABLE users ADD COLUMNS (account_no BIGINT, phone_no BIGINT)
Если вы проверите схему таблицы users, вы можете найти в нем только что добавленные столбцы, как показано ниже.
quickstart.cloudera:21000] > describe users;
Query: describe users
+------------+--------+---------+
| name | type | comment |
+------------+--------+---------+
| id | int | |
| name | string | |
| age | int | |
| address | string | |
| salary | bigint | |
| account_no | bigint | |
| phone_no | bigint | |
+------------+--------+---------+
Fetched 7 row(s) in 0.20s
Удаление столбцов из таблицы
Синтаксис
Базовый синтаксис ALTER TABLE to DROP COLUMN в существующей таблице выглядит следующим образом -
ALTER TABLE name DROP [COLUMN] column_name
пример
Следующий запрос является примером удаления столбцов из существующей таблицы. Здесь мы удаляем столбец с именемaccount_no.
[quickstart.cloudera:21000] > ALTER TABLE users DROP account_no;
При выполнении вышеуказанного запроса Impala удаляет столбец с именем account_no, отображающий следующее сообщение.
Query: alter TABLE users DROP account_no
Если вы проверите схему таблицы users, вы не можете найти столбец с именем account_no так как он был удален.
[quickstart.cloudera:21000] > describe users;
Query: describe users
+----------+--------+---------+
| name | type | comment |
+----------+--------+---------+
| id | int | |
| name | string | |
| age | int | |
| address | string | |
| salary | bigint | |
| phone_no | bigint | |
+----------+--------+---------+
Fetched 6 row(s) in 0.11s
Изменение названия и типа столбца
Синтаксис
Базовый синтаксис ALTER TABLE to change the name and datatype столбца в существующей таблице выглядит следующим образом -
ALTER TABLE name CHANGE column_name new_name new_type
пример
Ниже приведен пример изменения имени и типа данных столбца с помощью оператора alter. Здесь мы меняем название столбцаphone_no to email и его тип данных для string.
[quickstart.cloudera:21000] > ALTER TABLE users CHANGE phone_no e_mail string;
При выполнении вышеуказанного запроса Impala вносит указанные изменения, отображая следующее сообщение.
Query: alter TABLE users CHANGE phone_no e_mail string
Вы можете проверить метаданные пользователей таблицы, используя describeзаявление. Вы можете заметить, что Impala внесла необходимые изменения в указанный столбец.
[quickstart.cloudera:21000] > describe users;
Query: describe users
+----------+--------+---------+
| name | type | comment |
+----------+--------+---------+
| id | int | |
| name | string | |
| age | int | |
| address | string | |
| salary | bigint | |
| phone_no | bigint | |
+----------+--------+---------+
Fetched 6 row(s) in 0.11s
Изменение таблицы с помощью оттенка
Откройте редактор запросов Impala и введите alter в нем и нажмите кнопку выполнения, как показано на следующем снимке экрана.
При выполнении вышеуказанного запроса имя таблицы изменится. customers к users. Таким же образом мы можем выполнить всеalter запросы.
Импала drop tableОператор используется для удаления существующей таблицы в Impala. Этот оператор также удаляет базовые файлы HDFS для внутренних таблиц.
NOTE - Вы должны быть осторожны при использовании этой команды, потому что после удаления таблицы вся информация, доступная в таблице, также будет потеряна навсегда.
Синтаксис
Ниже приводится синтаксис DROP TABLEУтверждение. Вот,IF EXISTSявляется необязательным предложением. Если мы используем это предложение, таблица с данным именем удаляется, только если она существует. В противном случае никакие операции выполняться не будут.
DROP table database_name.table_name;
Если вы попытаетесь удалить таблицу, которая не существует, без предложения IF EXISTS, будет сгенерирована ошибка. При желании вы можете указатьdatabase_name вместе с тable_name.
пример
Давайте сначала проверим список таблиц в базе данных my_db как показано ниже.
[quickstart.cloudera:21000] > show tables;
Query: show tables
+------------+
| name |
+------------+
| customers |
| employee |
| student |
+------------+
Fetched 3 row(s) in 0.11s
Из приведенного выше результата вы можете заметить, что база данных my_db содержит 3 таблицы
Ниже приводится пример drop table statement. В этом примере мы удаляем таблицу с именемstudent из базы данных my_db.
[quickstart.cloudera:21000] > drop table if exists my_db.student;
При выполнении вышеуказанного запроса таблица с указанным именем будет удалена с отображением следующего вывода.
Query: drop table if exists student
Проверка
В show Tablesquery дает список таблиц в текущей базе данных в Impala. Следовательно, вы можете проверить, удалена ли таблица, используяShow Tables заявление.
Прежде всего, вам нужно переключить контекст на базу данных, в которой существует требуемая таблица, как показано ниже.
[quickstart.cloudera:21000] > use my_db;
Query: use my_db
Затем, если вы получите список таблиц с помощью show tables запрос, вы можете наблюдать таблицу с именем student нет в списке.
[quickstart.cloudera:21000] > show tables;
Query: show tables
+-----------+
| name |
+-----------+
| customers |
| employee |
| student |
+-----------+
Fetched 3 row(s) in 0.11s
Создание базы данных с помощью Hue Browser
Откройте редактор запросов Impala и введите drop TableПостановка в нем. И нажмите кнопку «Выполнить», как показано на следующем снимке экрана.
После выполнения запроса осторожно переместите курсор в верхнюю часть раскрывающегося меню, и вы найдете символ обновления. Если вы щелкните символ обновления, список баз данных будет обновлен, и к нему будут применены последние сделанные изменения.
Проверка
Нажми на drop down под заголовком DATABASEв левой части редактора. Там вы можете увидеть список баз данных; выберите базу данныхmy_db как показано ниже.
При выборе базы данных my_db, вы можете увидеть в нем список таблиц, как показано ниже. Здесь вы не можете найти удаленную таблицуstudent в списке, как показано ниже.
В Truncate Table Оператор Impala используется для удаления всех записей из существующей таблицы.
Вы также можете использовать команду DROP TABLE для удаления всей таблицы, но это приведет к удалению всей структуры таблицы из базы данных, и вам нужно будет заново создать эту таблицу еще раз, если вы хотите сохранить некоторые данные.
Синтаксис
Ниже приводится синтаксис оператора усечения таблицы.
truncate table_name;
пример
Предположим, у нас есть таблица с именем customersв Impala, и если вы проверите его содержимое, вы получите следующий результат. Это означает, что таблица клиентов содержит 6 записей.
[quickstart.cloudera:21000] > select * from customers;
Query: select * from customers
+----+----------+-----+-----------+--------+--------+
| id | name | age | address | salary | e_mail |
+----+----------+-----+-----------+--------+--------+
| 1 | Ramesh | 32 | Ahmedabad | 20000 | NULL |
| 2 | Khilan | 25 | Delhi | 15000 | NULL |
| 3 | kaushik | 23 | Kota | 30000 | NULL |
| 4 | Chaitali | 25 | Mumbai | 35000 | NULL |
| 5 | Hardik | 27 | Bhopal | 40000 | NULL |
| 6 | Komal | 22 | MP | 32000 | NULL |
+----+----------+-----+-----------+--------+--------+
Ниже приведен пример усечения таблицы в Impala с использованием truncate statement. Здесь мы удаляем все записи таблицы с именемcustomers.
[quickstart.cloudera:21000] > truncate customers;
При выполнении вышеуказанного оператора Impala удаляет все записи указанной таблицы, отображая следующее сообщение.
Query: truncate customers
Fetched 0 row(s) in 0.37s
Проверка
Если вы проверяете содержимое таблицы клиентов после операции удаления, используя select оператор, вы получите пустую строку, как показано ниже.
[quickstart.cloudera:21000] > select * from customers;
Query: select * from customers
Fetched 0 row(s) in 0.12s
Усечение таблицы с помощью Hue Browser
Откройте редактор запросов Impala и введите truncateПостановка в нем. И нажмите кнопку «Выполнить», как показано на следующем снимке экрана.
После выполнения запроса / оператора все записи из таблицы удаляются.
В show tables Оператор в Impala используется для получения списка всех существующих таблиц в текущей базе данных.
пример
Ниже приводится пример show tablesзаявление. Если вы хотите получить список таблиц в конкретной базе данных, прежде всего, измените контекст на нужную базу данных и получите список таблиц в ней, используяshow tables заявление, как показано ниже.
[quickstart.cloudera:21000] > use my_db;
Query: use my_db
[quickstart.cloudera:21000] > show tables;
При выполнении вышеуказанного запроса Impala извлекает список всех таблиц в указанной базе данных и отображает его, как показано ниже.
Query: show tables
+-----------+
| name |
+-----------+
| customers |
| employee |
+-----------+
Fetched 2 row(s) in 0.10s
Составление списка таблиц с использованием оттенка
Откройте редактор запросов impala, выберите контекст как my_db и введите show tables в нем и нажмите кнопку выполнения, как показано на следующем снимке экрана.
Если после выполнения запроса вы прокрутите вниз и выберите Results На вкладке вы можете увидеть список таблиц, как показано ниже.
Представление - это не что иное, как выражение языка запросов Impala, которое хранится в базе данных с соответствующим именем. Это композиция таблицы в виде заранее определенного SQL-запроса.
Представление может содержать все строки таблицы или выбранные. Представление можно создать из одной или нескольких таблиц. Просмотры позволяют пользователям -
Структурируйте данные таким образом, чтобы пользователи или классы пользователей находили естественный или интуитивно понятный способ.
Ограничьте доступ к данным, чтобы пользователь мог видеть и (иногда) изменять именно то, что ему нужно, и не более того.
Обобщите данные из различных таблиц, которые можно использовать для создания отчетов.
Вы можете создать представление, используя Create View заявление Импалы.
Синтаксис
Ниже приведен синтаксис оператора создания представления. IF NOT EXISTSявляется необязательным предложением. Если мы используем это предложение, таблица с заданным именем создается, только если в указанной базе данных нет существующей таблицы с тем же именем.
Create View IF NOT EXISTS view_name as Select statement
пример
Например, предположим, что у нас есть таблица с именем customers в my_db база данных в Impala со следующими данными.
ID NAME AGE ADDRESS SALARY
--- --------- ----- ----------- --------
1 Ramesh 32 Ahmedabad 20000
2 Khilan 25 Delhi 15000
3 Hardik 27 Bhopal 40000
4 Chaitali 25 Mumbai 35000
5 kaushik 23 Kota 30000
6 Komal 22 MP 32000
Ниже приводится пример Create View Statement. В этом примере мы создаем представление какcustomers таблица, содержащая столбцы, имя и возраст.
[quickstart.cloudera:21000] > CREATE VIEW IF NOT EXISTS customers_view AS
select name, age from customers;
При выполнении вышеуказанного запроса создается представление с нужными столбцами, в котором отображается следующее сообщение.
Query: create VIEW IF NOT EXISTS sample AS select * from customers
Fetched 0 row(s) in 0.33s
Проверка
Вы можете проверить содержимое только что созданного представления, используя select заявление, как показано ниже.
[quickstart.cloudera:21000] > select * from customers_view;
Это даст следующий результат.
Query: select * from customers_view
+----------+-----+
| name | age |
+----------+-----+
| Komal | 22 |
| Khilan | 25 |
| Ramesh | 32 |
| Hardik | 27 |
| Chaitali | 25 |
| kaushik | 23 |
+----------+-----+
Fetched 6 row(s) in 4.80s
Создание представления с использованием оттенка
Откройте редактор запросов Impala, выберите контекст как my_db, и введите Create View в нем и нажмите кнопку выполнения, как показано на следующем снимке экрана.
После выполнения запроса, если вы прокрутите вниз, вы увидите view названный sample создается в списке таблиц, как показано ниже.
В Alter Viewзаявление Импалы используется для изменения взгляда. Используя этот оператор, вы можете изменить имя представления, изменить базу данных и связанный с ней запрос.
Поскольку view логическая конструкция, никакие физические данные не будут затронуты alter view запрос.
Синтаксис
Ниже приводится синтаксис Alter View заявление
ALTER VIEW database_name.view_name as Select statement
пример
Например, предположим, что у нас есть представление с именем customers_view в my_db база данных в Impala со следующим содержимым.
+----------+-----+
| name | age |
+----------+-----+
| Komal | 22 |
| Khilan | 25 |
| Ramesh | 32 |
| Hardik | 27 |
| Chaitali | 25 |
| kaushik | 23 |
+----------+-----+
Ниже приводится пример Alter View Statement. В этом примере мы включаем столбцы id, name и salary вместо имени и возраста вcustomers_view.
[quickstart.cloudera:21000] > Alter view customers_view as select id, name,
salary from customers;
При выполнении вышеуказанного запроса Impala вносит указанные изменения в customers_view, отображая следующее сообщение.
Query: alter view customers_view as select id, name, salary from customers
Проверка
Вы можете проверить содержимое view названный customers_view, используя select заявление, как показано ниже.
[quickstart.cloudera:21000] > select * from customers_view;
Query: select * from customers_view
Это даст следующий результат.
+----+----------+--------+
| id | name | salary |
+----+----------+--------+
| 3 | kaushik | 30000 |
| 2 | Khilan | 15000 |
| 5 | Hardik | 40000 |
| 6 | Komal | 32000 |
| 1 | Ramesh | 20000 |
| 4 | Chaitali | 35000 |
+----+----------+--------+
Fetched 6 row(s) in 0.69s
Изменение вида с помощью оттенка
Откройте редактор запросов Impala, выберите контекст как my_db, и введите Alter View в нем и нажмите кнопку выполнения, как показано на следующем снимке экрана.
После выполнения запроса view названный sample будут соответственно изменены.
В Drop Viewзапрос Impala используется для удаления существующего представления. Посколькуview логическая конструкция, никакие физические данные не будут затронуты drop view запрос.
Синтаксис
Ниже приводится синтаксис оператора drop view.
DROP VIEW database_name.view_name;
пример
Например, предположим, что у нас есть представление с именем customers_view в my_db база данных в Impala со следующим содержимым.
+----------+-----+
| name | age |
+----------+-----+
| Komal | 22 |
| Khilan | 25 |
| Ramesh | 32 |
| Hardik | 27 |
| Chaitali | 25 |
| kaushik | 23 |
+----------+-----+
Ниже приводится пример Drop View Statement. В этом примере мы пытаемся удалитьview названный customers_view используя drop view запрос.
[quickstart.cloudera:21000] > Drop view customers_view;
При выполнении вышеуказанного запроса Impala удаляет указанное представление, отображая следующее сообщение.
Query: drop view customers_view
Проверка
Если вы проверите список таблиц с помощью show tables заявление, вы можете заметить, что view названный customers_view удален.
[quickstart.cloudera:21000] > show tables;
Это даст следующий результат.
Query: show tables
+-----------+
| name |
+-----------+
| customers |
| employee |
| sample |
+-----------+
Fetched 3 row(s) in 0.10s
Удаление представления с использованием оттенка
Откройте редактор запросов Impala, выберите контекст как my_db, и введите Drop view в нем и нажмите кнопку выполнения, как показано на следующем снимке экрана.
После выполнения запроса, если вы прокрутите вниз, вы увидите список с именем TABLES. Этот список содержит всеtables и viewsв текущей базе данных. Из этого списка вы можете найти, что указанныйview был удален.
Импала ORDER BYПредложение используется для сортировки данных в порядке возрастания или убывания на основе одного или нескольких столбцов. Некоторые базы данных по умолчанию сортируют результаты запроса в порядке возрастания.
Синтаксис
Ниже приводится синтаксис предложения ORDER BY.
select * from table_name ORDER BY col_name [ASC|DESC] [NULLS FIRST|NULLS LAST]
Вы можете расположить данные в таблице в порядке возрастания или убывания, используя ключевые слова ASC или же DESC соответственно.
Таким же образом, если мы используем NULLS FIRST, все нулевые значения в таблице располагаются в верхних строках; и если мы используем NULLS LAST, строки, содержащие нулевые значения, будут расположены последними.
пример
Предположим, у нас есть таблица с именем customers в базе данных my_db и его содержимое выглядит следующим образом -
[quickstart.cloudera:21000] > select * from customers;
Query: select * from customers
+----+----------+-----+-----------+--------+
| id | name | age | address | salary |
+----+----------+-----+-----------+--------+
| 3 | kaushik | 23 | Kota | 30000 |
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
| 2 | Khilan | 25 | Delhi | 15000 |
| 6 | Komal | 22 | MP | 32000 |
| 4 | Chaitali | 25 | Mumbai | 35000 |
| 5 | Hardik | 27 | Bhopal | 40000 |
+----+----------+-----+-----------+--------+
Fetched 6 row(s) in 0.51s
Ниже приведен пример размещения данных в customers таблицу в порядке возрастания их id’s используя order by пункт.
[quickstart.cloudera:21000] > Select * from customers ORDER BY id asc;
При выполнении вышеуказанный запрос дает следующий результат.
Query: select * from customers ORDER BY id asc
+----+----------+-----+-----------+--------+
| id | name | age | address | salary |
+----+----------+-----+-----------+--------+
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
| 2 | Khilan | 25 | Delhi | 15000 |
| 3 | kaushik | 23 | Kota | 30000 |
| 4 | Chaitali | 25 | Mumbai | 35000 |
| 5 | Hardik | 27 | Bhopal | 40000 |
| 6 | Komal | 22 | MP | 32000 |
+----+----------+-----+-----------+--------+
Fetched 6 row(s) in 0.56s
Таким же образом можно расположить данные customers таблицу в порядке убывания с использованием order by пункт, как показано ниже.
[quickstart.cloudera:21000] > Select * from customers ORDER BY id desc;
При выполнении вышеуказанный запрос дает следующий результат.
Query: select * from customers ORDER BY id desc
+----+----------+-----+-----------+--------+
| id | name | age | address | salary |
+----+----------+-----+-----------+--------+
| 6 | Komal | 22 | MP | 32000 |
| 5 | Hardik | 27 | Bhopal | 40000 |
| 4 | Chaitali | 25 | Mumbai | 35000 |
| 3 | kaushik | 23 | Kota | 30000 |
| 2 | Khilan | 25 | Delhi | 15000 |
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
+----+----------+-----+-----------+--------+
Fetched 6 row(s) in 0.54s
Импала GROUP BY Предложение используется в сотрудничестве с оператором SELECT для организации идентичных данных в группы.
Синтаксис
Ниже приводится синтаксис предложения GROUP BY.
select data from table_name Group BY col_name;
пример
Предположим, у нас есть таблица с именем customers в базе данных my_db и его содержимое выглядит следующим образом -
[quickstart.cloudera:21000] > select * from customers;
Query: select * from customers
+----+----------+-----+-----------+--------+
| id | name | age | address | salary |
+----+----------+-----+-----------+--------+
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
| 2 | Khilan | 25 | Delhi | 15000 |
| 3 | kaushik | 23 | Kota | 30000 |
| 4 | Chaitali | 25 | Mumbai | 35000 |
| 5 | Hardik | 27 | Bhopal | 40000 |
| 6 | Komal | 22 | MP | 32000 |
+----+----------+-----+-----------+--------+
Fetched 6 row(s) in 0.51s
Вы можете получить общую сумму зарплаты каждого клиента с помощью запроса GROUP BY, как показано ниже.
[quickstart.cloudera:21000] > Select name, sum(salary) from customers Group BY name;
При выполнении вышеуказанный запрос дает следующий результат.
Query: select name, sum(salary) from customers Group BY name
+----------+-------------+
| name | sum(salary) |
+----------+-------------+
| Ramesh | 20000 |
| Komal | 32000 |
| Hardik | 40000 |
| Khilan | 15000 |
| Chaitali | 35000 |
| kaushik | 30000 |
+----------+-------------+
Fetched 6 row(s) in 1.75s
Предположим, что в этой таблице есть несколько записей, как показано ниже.
+----+----------+-----+-----------+--------+
| id | name | age | address | salary |
+----+----------+-----+-----------+--------+
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
| 2 | Ramesh | 32 | Ahmedabad | 1000| |
| 3 | Khilan | 25 | Delhi | 15000 |
| 4 | kaushik | 23 | Kota | 30000 |
| 5 | Chaitali | 25 | Mumbai | 35000 |
| 6 | Chaitali | 25 | Mumbai | 2000 |
| 7 | Hardik | 27 | Bhopal | 40000 |
| 8 | Komal | 22 | MP | 32000 |
+----+----------+-----+-----------+--------+
Опять же, вы можете получить общую сумму заработной платы сотрудников с учетом повторных записей записей, используя Group By пункт, как показано ниже.
Select name, sum(salary) from customers Group BY name;
При выполнении вышеуказанный запрос дает следующий результат.
Query: select name, sum(salary) from customers Group BY name
+----------+-------------+
| name | sum(salary) |
+----------+-------------+
| Ramesh | 21000 |
| Komal | 32000 |
| Hardik | 40000 |
| Khilan | 15000 |
| Chaitali | 37000 |
| kaushik | 30000 |
+----------+-------------+
Fetched 6 row(s) in 1.75s
В Having Предложение в Impala позволяет вам указать условия, которые фильтруют результаты группы, которые появляются в окончательных результатах.
В целом Having предложение используется вместе с group byпункт; он накладывает условия на группы, созданные предложением GROUP BY.
Синтаксис
Ниже приводится синтаксис Havingпункт.
select * from table_name ORDER BY col_name [ASC|DESC] [NULLS FIRST|NULLS LAST]
пример
Предположим, у нас есть таблица с именем customers в базе данных my_db и его содержимое выглядит следующим образом -
[quickstart.cloudera:21000] > select * from customers;
Query: select * from customers
+----+----------+-----+-------------+--------+
| id | name | age | address | salary |
+----+----------+-----+-------------+--------+
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
| 2 | Khilan | 25 | Delhi | 15000 |
| 3 | kaushik | 23 | Kota | 30000 |
| 4 | Chaitali | 25 | Mumbai | 35000 |
| 5 | Hardik | 27 | Bhopal | 40000 |
| 6 | Komal | 22 | MP | 32000 |
| 7 | ram | 25 | chennai | 23000 |
| 8 | rahim | 22 | vizag | 31000 |
| 9 | robert | 23 | banglore | 28000 |
+----+----------+-----+-----------+--------+
Fetched 9 row(s) in 0.51s
Ниже приводится пример использования Having пункт в Импале -
[quickstart.cloudera:21000] > select max(salary) from customers group by age having max(salary) > 20000;
Этот запрос изначально группирует таблицу по возрасту, выбирает максимальные зарплаты для каждой группы и отображает те зарплаты, которые превышают 20000, как показано ниже.
20000
+-------------+
| max(salary) |
+-------------+
| 30000 |
| 35000 |
| 40000 |
| 32000 |
+-------------+
Fetched 4 row(s) in 1.30s
В limit Предложение в Impala используется для ограничения количества строк набора результатов до желаемого числа, т. е. набор результатов запроса не содержит записей, превышающих указанный предел.
Синтаксис
Ниже приводится синтаксис Limit пункт в Импале.
select * from table_name order by id limit numerical_expression;
пример
Предположим, у нас есть таблица с именем customers в базе данных my_db и его содержимое выглядит следующим образом -
[quickstart.cloudera:21000] > select * from customers;
Query: select * from customers
+----+----------+-----+-----------+--------+
| id | name | age | address | salary |
+----+----------+-----+-----------+--------+
| 3 | kaushik | 23 | Kota | 30000 |
| 6 | Komal | 22 | MP | 32000 |
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
| 5 | Hardik | 27 | Bhopal | 40000 |
| 2 | Khilan | 25 | Delhi | 15000 |
| 8 | ram | 22 | vizag | 31000 |
| 9 | robert | 23 | banglore | 28000 |
| 7 | ram | 25 | chennai | 23000 |
| 4 | Chaitali | 25 | Mumbai | 35000 |
+----+----------+-----+-----------+--------+
Fetched 9 row(s) in 0.51s
Вы можете расположить записи в таблице в порядке возрастания их идентификаторов, используя order by пункт, как показано ниже.
[quickstart.cloudera:21000] > select * from customers order by id;
Query: select * from customers order by id
+----+----------+-----+-----------+--------+
| id | name | age | address | salary |
+----+----------+-----+-----------+--------+
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
| 2 | Khilan | 25 | Delhi | 15000 |
| 3 | kaushik | 23 | Kota | 30000 |
| 4 | Chaitali | 25 | Mumbai | 35000 |
| 5 | Hardik | 27 | Bhopal | 40000 |
| 6 | Komal | 22 | MP | 32000 |
| 7 | ram | 25 | chennai | 23000 |
| 8 | ram | 22 | vizag | 31000 |
| 9 | robert | 23 | banglore | 28000 |
+----+----------+-----+-----------+--------+
Fetched 9 row(s) in 0.54s
Теперь, используя limit предложение, вы можете ограничить количество записей вывода до 4, используя limit пункт, как показано ниже.
[quickstart.cloudera:21000] > select * from customers order by id limit 4;
При выполнении вышеуказанный запрос дает следующий результат.
Query: select * from customers order by id limit 4
+----+----------+-----+-----------+--------+
| id | name | age | address | salary |
+----+----------+-----+-----------+--------+
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
| 2 | Khilan | 25 | Delhi | 15000 |
| 3 | kaushik | 23 | Kota | 30000 |
| 4 | Chaitali | 25 | Mumbai | 35000 |
+----+----------+-----+-----------+--------+
Fetched 4 row(s) in 0.64s
В общем, строки в наборе результатов select запрос начинается с 0. Использование offsetраздел, мы можем решить, откуда следует учитывать результат. Например, если мы выберем смещение как 0, результат будет обычным, а если мы выберем смещение как 5, результат начнется с пятой строки.
Синтаксис
Ниже приводится синтаксис offsetпункт в Импале.
select data from table_name Group BY col_name;
пример
Предположим, у нас есть таблица с именем customers в базе данных my_db и его содержимое выглядит следующим образом -
[quickstart.cloudera:21000] > select * from customers;
Query: select * from customers
+----+----------+-----+-----------+--------+
| id | name | age | address | salary |
+----+----------+-----+-----------+--------+
| 3 | kaushik | 23 | Kota | 30000 |
| 6 | Komal | 22 | MP | 32000 |
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
| 5 | Hardik | 27 | Bhopal | 40000 |
| 2 | Khilan | 25 | Delhi | 15000 |
| 8 | ram | 22 | vizag | 31000 |
| 9 | robert | 23 | banglore | 28000 |
| 7 | ram | 25 | chennai | 23000 |
| 4 | Chaitali | 25 | Mumbai | 35000 |
+----+----------+-----+-----------+--------+
Fetched 9 row(s) in 0.51s
Вы можете расположить записи в таблице в порядке возрастания их идентификаторов и ограничить количество записей до 4, используя limit и order by пункты, как показано ниже.
Query: select * from customers order by id limit 4
+----+----------+-----+-----------+--------+
| id | name | age | address | salary |
+----+----------+-----+-----------+--------+
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
| 2 | Khilan | 25 | Delhi | 15000 |
| 3 | kaushik | 23 | Kota | 30000 |
| 4 | Chaitali | 25 | Mumbai | 35000 |
+----+----------+-----+-----------+--------+
Fetched 4 row(s) in 0.64s
Ниже приводится пример offsetпункт. Здесь мы получаем записи вcustomerstable в порядке их идентификаторов и выводит первые четыре строки, начиная с 0- й строки.
[quickstart.cloudera:21000] > select * from customers order by id limit 4 offset 0;
При выполнении вышеуказанный запрос дает следующий результат.
Query: select * from customers order by id limit 4 offset 0
+----+----------+-----+-----------+--------+
| id | name | age | address | salary |
+----+----------+-----+-----------+--------+
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
| 2 | Khilan | 25 | Delhi | 15000 |
| 3 | kaushik | 23 | Kota | 30000 |
| 4 | Chaitali | 25 | Mumbai | 35000 |
+----+----------+-----+-----------+--------+
Fetched 4 row(s) in 0.62s
Таким же образом вы можете получить четыре записи из customers таблица, начиная со строки со смещением 5, как показано ниже.
[quickstart.cloudera:21000] > select * from customers order by id limit 4 offset 5;
Query: select * from customers order by id limit 4 offset 5
+----+--------+-----+----------+--------+
| id | name | age | address | salary |
+----+--------+-----+----------+--------+
| 6 | Komal | 22 | MP | 32000 |
| 7 | ram | 25 | chennai | 23000 |
| 8 | ram | 22 | vizag | 31000 |
| 9 | robert | 23 | banglore | 28000 |
+----+--------+-----+----------+--------+
Fetched 4 row(s) in 0.52s
Вы можете объединить результаты двух запросов, используя Union статья Импалы.
Синтаксис
Ниже приводится синтаксис Union пункт в Импале.
query1 union query2;
пример
Предположим, у нас есть таблица с именем customers в базе данных my_db и его содержимое выглядит следующим образом -
[quickstart.cloudera:21000] > select * from customers;
Query: select * from customers
+----+----------+-----+-----------+--------+
| id | name | age | address | salary |
+----+----------+-----+-----------+--------+
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
| 9 | robert | 23 | banglore | 28000 |
| 2 | Khilan | 25 | Delhi | 15000 |
| 4 | Chaitali | 25 | Mumbai | 35000 |
| 7 | ram | 25 | chennai | 23000 |
| 6 | Komal | 22 | MP | 32000 |
| 8 | ram | 22 | vizag | 31000 |
| 5 | Hardik | 27 | Bhopal | 40000 |
| 3 | kaushik | 23 | Kota | 30000 |
+----+----------+-----+-----------+--------+
Fetched 9 row(s) in 0.59s
Таким же образом предположим, что у нас есть другая таблица с именем employee и его содержимое выглядит следующим образом -
[quickstart.cloudera:21000] > select * from employee;
Query: select * from employee
+----+---------+-----+---------+--------+
| id | name | age | address | salary |
+----+---------+-----+---------+--------+
| 3 | mahesh | 54 | Chennai | 55000 |
| 2 | ramesh | 44 | Chennai | 50000 |
| 4 | Rupesh | 64 | Delhi | 60000 |
| 1 | subhash | 34 | Delhi | 40000 |
+----+---------+-----+---------+--------+
Fetched 4 row(s) in 0.59s
Ниже приводится пример unionпункт в Импале. В этом примере мы располагаем записи в обеих таблицах в порядке их идентификаторов и ограничиваем их количество тремя, используя два отдельных запроса и объединяя эти запросы с помощьюUNION пункт.
[quickstart.cloudera:21000] > select * from customers order by id limit 3
union select * from employee order by id limit 3;
При выполнении вышеуказанный запрос дает следующий результат.
Query: select * from customers order by id limit 3 union select
* from employee order by id limit 3
+----+---------+-----+-----------+--------+
| id | name | age | address | salary |
+----+---------+-----+-----------+--------+
| 2 | Khilan | 25 | Delhi | 15000 |
| 3 | mahesh | 54 | Chennai | 55000 |
| 1 | subhash | 34 | Delhi | 40000 |
| 2 | ramesh | 44 | Chennai | 50000 |
| 3 | kaushik | 23 | Kota | 30000 |
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
+----+---------+-----+-----------+--------+
Fetched 6 row(s) in 3.11s
Если запрос слишком сложен, мы можем определить aliases к сложным частям и включить их в запрос с помощью with статья Импалы.
Синтаксис
Ниже приводится синтаксис with пункт в Импале.
with x as (select 1), y as (select 2) (select * from x union y);
пример
Предположим, у нас есть таблица с именем customers в базе данных my_db и его содержимое выглядит следующим образом -
[quickstart.cloudera:21000] > select * from customers;
Query: select * from customers
+----+----------+-----+-----------+--------+
| id | name | age | address | salary |
+----+----------+-----+-----------+--------+
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
| 9 | robert | 23 | banglore | 28000 |
| 2 | Khilan | 25 | Delhi | 15000 |
| 4 | Chaitali | 25 | Mumbai | 35000 |
| 7 | ram | 25 | chennai | 23000 |
| 6 | Komal | 22 | MP | 32000 |
| 8 | ram | 22 | vizag | 31000 |
| 5 | Hardik | 27 | Bhopal | 40000 |
| 3 | kaushik | 23 | Kota | 30000 |
+----+----------+-----+-----------+--------+
Fetched 9 row(s) in 0.59s
Таким же образом предположим, что у нас есть другая таблица с именем employee и его содержимое выглядит следующим образом -
[quickstart.cloudera:21000] > select * from employee;
Query: select * from employee
+----+---------+-----+---------+--------+
| id | name | age | address | salary |
+----+---------+-----+---------+--------+
| 3 | mahesh | 54 | Chennai | 55000 |
| 2 | ramesh | 44 | Chennai | 50000 |
| 4 | Rupesh | 64 | Delhi | 60000 |
| 1 | subhash | 34 | Delhi | 40000 |
+----+---------+-----+---------+--------+
Fetched 4 row(s) in 0.59s
Ниже приводится пример withпункт в Импале. В этом примере мы отображаем записи из обоихemployee и customers чей возраст старше 25 лет, использующий with пункт.
[quickstart.cloudera:21000] >
with t1 as (select * from customers where age>25),
t2 as (select * from employee where age>25)
(select * from t1 union select * from t2);
При выполнении вышеуказанный запрос дает следующий результат.
Query: with t1 as (select * from customers where age>25), t2 as (select * from employee where age>25)
(select * from t1 union select * from t2)
+----+---------+-----+-----------+--------+
| id | name | age | address | salary |
+----+---------+-----+-----------+--------+
| 3 | mahesh | 54 | Chennai | 55000 |
| 1 | subhash | 34 | Delhi | 40000 |
| 2 | ramesh | 44 | Chennai | 50000 |
| 5 | Hardik | 27 | Bhopal | 40000 |
| 4 | Rupesh | 64 | Delhi | 60000 |
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
+----+---------+-----+-----------+--------+
Fetched 6 row(s) in 1.73s
В distinct Оператор в Impala используется для получения уникальных значений путем удаления дубликатов.
Синтаксис
Ниже приводится синтаксис distinct оператор.
select distinct columns… from table_name;
пример
Предположим, что у нас есть таблица с именем customers в Impala и его содержимое выглядит следующим образом -
[quickstart.cloudera:21000] > select distinct id, name, age, salary from customers;
Query: select distinct id, name, age, salary from customers
Здесь вы можете наблюдать за зарплатой клиентов, которые Рамеш и Чайтали вводили дважды и использовали distinct оператор, мы можем выбрать уникальные значения, как показано ниже.
[quickstart.cloudera:21000] > select distinct name, age, address from customers;
При выполнении вышеуказанный запрос дает следующий результат.
Query: select distinct id, name from customers
+----------+-----+-----------+
| name | age | address |
+----------+-----+-----------+
| Ramesh | 32 | Ahmedabad |
| Khilan | 25 | Delhi |
| kaushik | 23 | Kota |
| Chaitali | 25 | Mumbai |
| Hardik | 27 | Bhopal |
| Komal | 22 | MP |
+----------+-----+-----------+
Fetched 9 row(s) in 1.46s