Импала — Введение
Impala — это механизм SQL-запросов MPP (Massive Parallel Processing) для обработки огромных объемов данных, хранящихся в кластере Hadoop. Это программное обеспечение с открытым исходным кодом, написанное на C ++ и Java. Он обеспечивает высокую производительность и низкую задержку по сравнению с другими механизмами SQL для Hadoop.
Другими словами, Impala — это самый высокопроизводительный механизм SQL (обеспечивающий работу с RDBMS), который обеспечивает самый быстрый способ доступа к данным, хранящимся в распределенной файловой системе Hadoop.
Почему Импала?
Impala объединяет поддержку SQL и многопользовательскую производительность традиционной аналитической базы данных с масштабируемостью и гибкостью Apache Hadoop, используя стандартные компоненты, такие как HDFS, HBase, Metastore, YARN и Sentry.
-
С помощью Impala пользователи могут общаться с HDFS или HBase с помощью запросов SQL быстрее, по сравнению с другими механизмами SQL, такими как Hive.
-
Impala может читать практически все форматы файлов, такие как Parquet, Avro, RCFile, используемые Hadoop.
С помощью Impala пользователи могут общаться с HDFS или HBase с помощью запросов SQL быстрее, по сравнению с другими механизмами SQL, такими как Hive.
Impala может читать практически все форматы файлов, такие как Parquet, Avro, RCFile, используемые Hadoop.
Impala использует те же метаданные, синтаксис SQL (Hive SQL), драйвер ODBC и пользовательский интерфейс (Hue Beeswax), что и Apache Hive, обеспечивая знакомую и унифицированную платформу для пакетных запросов или запросов в реальном времени.
В отличие от Apache Hive, Impala не основана на алгоритмах MapReduce . Он реализует распределенную архитектуру на основе процессов-демонов , которые отвечают за все аспекты выполнения запросов, выполняющихся на одних и тех же машинах.
Таким образом, это уменьшает задержку использования MapReduce, и это делает Impala быстрее, чем Apache Hive.
Преимущества Импалы
Вот список некоторых отмеченных преимуществ Cloudera Impala.
-
Используя Impala, вы можете обрабатывать данные, хранящиеся в HDFS, с молниеносной скоростью, используя традиционные знания SQL.
-
Поскольку обработка данных осуществляется там, где они находятся (в кластере Hadoop), преобразование данных и перемещение данных не требуется для данных, хранящихся в Hadoop, при работе с Impala.
-
Используя Impala, вы можете получить доступ к данным, которые хранятся в HDFS, HBase и Amazon s3 без знания Java (задания MapReduce). Вы можете получить к ним доступ с базовым представлением SQL-запросов.
-
Чтобы написать запросы в бизнес-инструментах, данные должны пройти сложный цикл извлечения-преобразования-загрузки (ETL). Но с Impala эта процедура сокращается. Трудоемкие этапы загрузки и реорганизации преодолеваются благодаря новым методам, таким как анализ поисковых данных и обнаружение данных, которые ускоряют процесс.
-
Impala впервые использует формат файла Parquet, макет столбчатого хранилища, оптимизированный для крупномасштабных запросов, типичных для сценариев хранилища данных.
Используя Impala, вы можете обрабатывать данные, хранящиеся в HDFS, с молниеносной скоростью, используя традиционные знания SQL.
Поскольку обработка данных осуществляется там, где они находятся (в кластере Hadoop), преобразование данных и перемещение данных не требуется для данных, хранящихся в Hadoop, при работе с Impala.
Используя Impala, вы можете получить доступ к данным, которые хранятся в HDFS, HBase и Amazon s3 без знания Java (задания MapReduce). Вы можете получить к ним доступ с базовым представлением SQL-запросов.
Чтобы написать запросы в бизнес-инструментах, данные должны пройти сложный цикл извлечения-преобразования-загрузки (ETL). Но с Impala эта процедура сокращается. Трудоемкие этапы загрузки и реорганизации преодолеваются благодаря новым методам, таким как анализ поисковых данных и обнаружение данных, которые ускоряют процесс.
Impala впервые использует формат файла Parquet, макет столбчатого хранилища, оптимизированный для крупномасштабных запросов, типичных для сценариев хранилища данных.
Особенности Импала
Ниже приведены особенности Cloudera Impala —
-
Impala доступна бесплатно как открытый исходный код под лицензией Apache.
-
Impala поддерживает обработку данных в памяти, т. Е. Получает доступ к данным, которые хранятся на узлах данных Hadoop, и анализирует их без перемещения данных.
-
Вы можете получить доступ к данным, используя Impala, используя SQL-подобные запросы.
-
Impala обеспечивает более быстрый доступ к данным в HDFS по сравнению с другими механизмами SQL.
-
Используя Impala, вы можете хранить данные в таких системах хранения, как HDFS, Apache HBase и Amazon s3.
-
Вы можете интегрировать Impala с такими инструментами бизнес-аналитики, как Tableau, Pentaho, Micro стратегии и Zoom data.
-
Impala поддерживает различные форматы файлов, такие как LZO, Sequence File, Avro, RCFile и Parquet.
-
Impala использует метаданные, драйвер ODBC и синтаксис SQL из Apache Hive.
Impala доступна бесплатно как открытый исходный код под лицензией Apache.
Impala поддерживает обработку данных в памяти, т. Е. Получает доступ к данным, которые хранятся на узлах данных Hadoop, и анализирует их без перемещения данных.
Вы можете получить доступ к данным, используя Impala, используя SQL-подобные запросы.
Impala обеспечивает более быстрый доступ к данным в HDFS по сравнению с другими механизмами SQL.
Используя Impala, вы можете хранить данные в таких системах хранения, как HDFS, Apache HBase и Amazon s3.
Вы можете интегрировать Impala с такими инструментами бизнес-аналитики, как Tableau, Pentaho, Micro стратегии и Zoom data.
Impala поддерживает различные форматы файлов, такие как LZO, Sequence File, Avro, RCFile и Parquet.
Impala использует метаданные, драйвер ODBC и синтаксис SQL из Apache Hive.
Реляционные базы данных и Импала
Impala использует язык запросов, который похож на SQL и HiveQL. В следующей таблице описаны некоторые ключевые различия между языком SQL и языком запросов Impala.
Impala | Реляционные базы данных |
---|---|
Impala использует SQL-подобный язык запросов, который похож на HiveQL. | Реляционные базы данных используют язык SQL. |
В Impala вы не можете обновлять или удалять отдельные записи. | В реляционных базах данных можно обновлять или удалять отдельные записи. |
Импала не поддерживает транзакции. | Реляционные базы данных поддерживают транзакции. |
Импала не поддерживает индексацию. | Реляционные базы данных поддерживают индексацию. |
Impala хранит и управляет большими объемами данных (петабайтами). | Реляционные базы данных обрабатывают меньшие объемы данных (терабайты) по сравнению с Impala. |
Улей, Hbase и Импала
Хотя Cloudera Impala использует тот же язык запросов, metastore и пользовательский интерфейс, что и Hive, в некоторых аспектах он отличается от Hive и HBase. В следующей таблице представлен сравнительный анализ среди HBase, Hive и Impala.
HBase | улей | Impala |
---|---|---|
HBase — это база данных с широкими столбцами, основанная на Apache Hadoop. Он использует концепции BigTable. | Hive — это программное обеспечение хранилища данных. Используя это, мы можем получить доступ и управлять большими распределенными наборами данных, построенными на Hadoop. | Impala — это инструмент для управления, анализа данных, которые хранятся в Hadoop. |
Модель данных HBase представляет собой широкий столбец хранилища. | Улей следует реляционной модели. | Импала следует реляционной модели. |
HBase разработан с использованием языка Java. | Hive разработан с использованием языка Java. | Импала разработана с использованием C ++. |
Модель данных HBase не содержит схем. | Модель данных Hive основана на схемах. | Модель данных Impala основана на схемах. |
HBase предоставляет Java, RESTful и Thrift API. | Hive предоставляет JDBC, ODBC, Thrift API. | Impala предоставляет JDBC и ODBC API. |
Поддерживает языки программирования, такие как C, C #, C ++, Groovy, Java PHP, Python и Scala. | Поддерживает языки программирования, такие как C ++, Java, PHP и Python. | Impala поддерживает все языки, поддерживающие JDBC / ODBC. |
HBase обеспечивает поддержку триггеров. | Hive не предоставляет никакой поддержки для триггеров. | Импала не предоставляет никакой поддержки для триггеров. |
Все эти три базы данных —
-
Есть базы данных NOSQL.
-
Доступно как с открытым исходным кодом.
-
Поддержка серверных сценариев.
-
Следуйте свойствам ACID, таким как долговечность и параллелизм.
-
Используйте шардинг для разбиения .
Есть базы данных NOSQL.
Доступно как с открытым исходным кодом.
Поддержка серверных сценариев.
Следуйте свойствам ACID, таким как долговечность и параллелизм.
Используйте шардинг для разбиения .
Недостатки Импалы
Некоторые из недостатков использования Impala заключаются в следующем —
- Impala не предоставляет никакой поддержки для сериализации и десериализации.
- Impala может читать только текстовые файлы, но не пользовательские двоичные файлы.
- Каждый раз, когда новые записи / файлы добавляются в каталог данных в HDFS, таблицу необходимо обновлять.
Импала — Окружающая среда
В этой главе описываются предварительные условия для установки Impala, как загрузить, установить и настроить Impala в вашей системе.
Подобно Hadoop и его экосистемному программному обеспечению, нам нужно установить Impala в операционной системе Linux. Поскольку Cloudera поставляется с Impala, она доступна с Cloudera Quick Start VM.
В этой главе описывается, как загрузить Cloudera Quick Start VM и запустить Impala.
Загрузка Cloudera Quick Start VM
Следуйте инструкциям ниже, чтобы загрузить последнюю версию Cloudera QuickStartVM .
Шаг 1
Откройте домашнюю страницу сайта Cloudera http://www.cloudera.com/ . Вы получите страницу, как показано ниже.
Шаг 2
Нажмите ссылку « Войти» на домашней странице cloudera, которая перенаправит вас на страницу входа, как показано ниже.
Если вы еще не зарегистрировались, нажмите на ссылку « Зарегистрироваться сейчас», которая предоставит вам форму регистрации учетной записи . Зарегистрируйтесь там и войдите в аккаунт Cloudera.
Шаг 3
После входа откройте страницу загрузки веб-сайта Cloudera, щелкнув ссылку « Загрузки», выделенную на следующем снимке.
Шаг 4 — Загрузите QuickStartVM
Загрузите cloudera QuickStartVM , нажав кнопку « Загрузить сейчас» , как показано на следующем снимке
Это перенаправит вас на страницу загрузки QuickStart VM .
Нажмите кнопку « Получить один» , примите лицензионное соглашение и нажмите кнопку «Отправить», как показано ниже.
Cloudera предлагает VMware-совместимые 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
При нажатии кнопки « Импортировать устройство» откроется окно «Импортировать виртуальное устройство». Выберите местоположение загруженного файла изображения, как показано ниже.
После импорта образа Cloudera QuickStartVM запустите виртуальную машину. На этой виртуальной машине установлены Hadoop, Cloudera Impala и все необходимое программное обеспечение. Снимок виртуальной машины показан ниже.
Начиная Импала Shell
Чтобы запустить Impala, откройте терминал и выполните следующую команду.
[cloudera@quickstart ~] $ impala-shell
Это запустит оболочку Impala, отображающую следующее сообщение.
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] >
Примечание. Мы обсудим все команды оболочки impala в следующих главах.
Impala Query editor
В дополнение к оболочке Impala вы можете общаться с Impala с помощью браузера Hue. После установки CDH5 и запуска Impala, если вы откроете браузер, вы получите домашнюю страницу cloudera, как показано ниже.
Теперь нажмите на закладку Hue, чтобы открыть браузер Hue. При нажатии вы можете увидеть страницу входа в браузер оттенков, войдя с учетными данными cloudera и cloudera.
Как только вы войдете в браузер Hue, вы увидите мастер быстрого запуска браузера Hue, как показано ниже.
Щелкнув раскрывающееся меню « Редакторы запросов» , вы получите список редакторов, поддерживаемых Impala, как показано на следующем снимке экрана.
Нажав Impala в раскрывающемся меню, вы получите редактор запросов Impala, как показано ниже.
Импала — Архитектура
Impala — это механизм выполнения запросов MPP (Massive Parallel Processing), который работает на нескольких системах в кластере Hadoop. В отличие от традиционных систем хранения, импала отделена от своего механизма хранения. Он состоит из трех основных компонентов, а именно: даемона Impala (Impalad) , Impala Statestore и метаданных Impala или metastore.
Импала Демон ( Импалад )
Демон Impala (также известный как impalad ) запускается на каждом узле, где установлена Impala. Он принимает запросы от различных интерфейсов, таких как оболочка Impala, браузер оттенков и т. Д., И обрабатывает их.
Всякий раз, когда запрос отправляется импаладу на конкретном узле, этот узел служит « координирующим узлом » для этого запроса. Impalad выполняет несколько запросов и на других узлах. После принятия запроса Impalad читает и записывает файлы данных и распараллеливает запросы, распределяя работу по другим узлам Impala в кластере Impala. Когда запросы обрабатываются в различных экземплярах Impalad , все они возвращают результат в центральный координирующий узел.
В зависимости от требования, запросы могут быть отправлены в отдельный Impalad или сбалансированным образом загружены другому Impalad в вашем кластере.
Импала Государственный Магазин
У Impala есть еще один важный компонент, который называется Impala State store, который отвечает за проверку работоспособности каждого Impalad, а затем часто передает здоровье каждого демона Impala другим демонам. Это может выполняться на том же узле, где работает сервер Impala или другой узел в кластере.
Имя процесса демона хранилища Impala State хранится в состоянии . Impalad сообщает о своем состоянии работоспособности демону хранилища State Impala, т.е.
В случае сбоя узла по какой-либо причине Statestore обновляет все другие узлы об этом сбое, и как только такое уведомление становится доступным для другого impalad , никакой другой демон Impala не назначает какие-либо дополнительные запросы уязвимому узлу.
Импала Метаданные и Мета Магазин
Импала метаданных и мета-хранилище является еще одним важным компонентом. Impala использует традиционные базы данных MySQL или PostgreSQL для хранения определений таблиц. Важные детали, такие как информация о таблицах и столбцах и определения таблиц, хранятся в централизованной базе данных, известной как мета-хранилище.
Каждый узел Impala локально кэширует все метаданные. При работе с чрезвычайно большим объемом данных и / или множеством разделов получение метаданных для конкретной таблицы может занять значительное время. Таким образом, локально сохраненный кэш метаданных помогает мгновенно предоставлять такую информацию.
Когда определение таблицы или данные таблицы обновляются, другие демоны Impala должны обновить свой кэш метаданных, извлекая самые последние метаданные, прежде чем отправлять новый запрос к рассматриваемой таблице.
Интерфейсы обработки запросов
Для обработки запросов Impala предоставляет три интерфейса, перечисленных ниже.
-
Impala-shell — После настройки Impala с использованием виртуальной машины Cloudera вы можете запустить оболочку Impala, введя команду impala-shell в редакторе. Мы обсудим больше о оболочке Impala в следующих главах.
-
Интерфейс Hue — Вы можете обрабатывать запросы Impala с помощью браузера Hue. В браузере Hue у вас есть редактор запросов Impala, в котором вы можете вводить и выполнять запросы Impala. Для доступа к этому редактору, прежде всего, вам необходимо войти в браузер Hue.
-
Драйверы ODBC / JDBC. Как и другие базы данных, Impala предоставляет драйверы ODBC / JDBC. Используя эти драйверы, вы можете подключаться к Impala через языки программирования, которые поддерживают эти драйверы, и создавать приложения, которые обрабатывают запросы в Impala, используя эти языки программирования.
Impala-shell — После настройки Impala с использованием виртуальной машины Cloudera вы можете запустить оболочку Impala, введя команду impala-shell в редакторе. Мы обсудим больше о оболочке Impala в следующих главах.
Интерфейс Hue — Вы можете обрабатывать запросы Impala с помощью браузера Hue. В браузере Hue у вас есть редактор запросов Impala, в котором вы можете вводить и выполнять запросы Impala. Для доступа к этому редактору, прежде всего, вам необходимо войти в браузер Hue.
Драйверы ODBC / JDBC. Как и другие базы данных, Impala предоставляет драйверы ODBC / JDBC. Используя эти драйверы, вы можете подключаться к Impala через языки программирования, которые поддерживают эти драйверы, и создавать приложения, которые обрабатывают запросы в Impala, используя эти языки программирования.
Процедура выполнения запроса
Всякий раз, когда пользователи передают запрос, используя любой из предоставленных интерфейсов, он принимается одним из Impalads в кластере. Этот Импалад рассматривается как координатор для этого конкретного запроса.
После получения запроса координатор запроса проверяет, является ли запрос соответствующим, используя схему таблиц из мета-хранилища Hive. Позже он собирает информацию о расположении данных, необходимых для выполнения запроса, из узла имени HDFS и отправляет эту информацию другим импаладам для выполнения запроса.
Все остальные демоны Impala читают указанный блок данных и обрабатывают запрос. Как только все демоны завершают свои задачи, координатор запросов собирает результат обратно и доставляет его пользователю.
Импала — Shell
В предыдущих главах мы видели установку Impala с использованием cloudera и ее архитектуры.
- Оболочка Импалы (командная строка)
- Hue (пользовательский интерфейс)
- ODBC и JDBC (сторонние библиотеки)
В этой главе объясняется, как запустить Impala Shell, и различные параметры оболочки.
Справочник по командам Impala Shell
Команды оболочки 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 дает вам список команд, доступных в 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 команд, выполненных в оболочке. Ниже приведен пример команды истории . Здесь мы выполнили 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 принимают запрос. Они объяснены ниже —
объяснять
Команда объяснения возвращает план выполнения для данного запроса.
[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
Профиль
Команда профиля отображает низкоуровневую информацию о последнем запросе. Эта команда используется для диагностики и настройки производительности запроса. Ниже приведен пример команды профиля . В этом случае команда профиля возвращает информацию низкого уровня запроса объяснения .
[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.
Sr.No | Команда и объяснение |
---|---|
1 |
изменять Команда alter используется для изменения структуры и имени таблицы в Impala. |
2 |
описывать Команда описания Impala дает метаданные таблицы. Он содержит такую информацию, как столбцы и их типы данных. Команда description имеет в качестве ярлыка desc . |
3 |
Капля Команда drop используется для удаления конструкции из Impala, где конструкция может быть таблицей, представлением или функцией базы данных. |
4 |
вставить Команда вставки Impala используется для,
|
5 |
Выбрать Оператор выбора используется для выполнения желаемой операции с конкретным набором данных. Он указывает набор данных, для которого необходимо выполнить какое-либо действие. Вы можете распечатать или сохранить (в файле) результат оператора выбора. |
6 |
шоу Оператор show Impala используется для отображения метастазов различных конструкций, таких как таблицы, базы данных и таблицы. |
7 |
использование Оператор использования Impala используется для изменения текущего контекста на нужную базу данных. |
изменять
Команда alter используется для изменения структуры и имени таблицы в Impala.
описывать
Команда описания Impala дает метаданные таблицы. Он содержит такую информацию, как столбцы и их типы данных. Команда description имеет в качестве ярлыка desc .
Капля
Команда drop используется для удаления конструкции из Impala, где конструкция может быть таблицей, представлением или функцией базы данных.
вставить
Команда вставки Impala используется для,
Выбрать
Оператор выбора используется для выполнения желаемой операции с конкретным набором данных. Он указывает набор данных, для которого необходимо выполнить какое-либо действие. Вы можете распечатать или сохранить (в файле) результат оператора выбора.
шоу
Оператор show Impala используется для отображения метастазов различных конструкций, таких как таблицы, базы данных и таблицы.
использование
Оператор использования Impala используется для изменения текущего контекста на нужную базу данных.
Импала — основы языка запросов
Импала Типы данных
В следующей таблице описаны типы данных Impala.
Sr.No | Тип данных и описание |
---|---|
1 |
BIGINT Этот тип данных хранит числовые значения, и диапазон этого типа данных составляет от -9223372036854775808 до 9223372036854775807. Этот тип данных используется в инструкциях create table и alter table. |
2 |
БУЛЕВЫ Этот тип данных хранит только значения true или false и используется в определении столбца оператора create table. |
3 |
CHAR Этот тип данных является хранилищем фиксированной длины, он дополняется пробелами, вы можете хранить до максимальной длины 255. |
4 |
ДЕСЯТИЧНЫЙ Этот тип данных используется для хранения десятичных значений и используется в инструкциях 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 |
карта Это сложный тип данных, и он используется для хранения переменного числа пар ключ-значение. |
15 |
Struct Это сложный тип данных, используемый для представления нескольких полей одного элемента. |
BIGINT
Этот тип данных хранит числовые значения, и диапазон этого типа данных составляет от -9223372036854775808 до 9223372036854775807. Этот тип данных используется в инструкциях create table и alter table.
БУЛЕВЫ
Этот тип данных хранит только значения true или false и используется в определении столбца оператора create table.
CHAR
Этот тип данных является хранилищем фиксированной длины, он дополняется пробелами, вы можете хранить до максимальной длины 255.
ДЕСЯТИЧНЫЙ
Этот тип данных используется для хранения десятичных значений и используется в инструкциях create table и alter table.
DOUBLE
Этот тип данных используется для хранения значений с плавающей запятой в диапазоне положительных или отрицательных значений 4.94065645841246544e-324d -1.79769313486231570e + 308.
FLOAT
Этот тип данных используется для хранения типов данных с плавающей запятой одинарной точности в диапазоне положительных или отрицательных значений 1.40129846432481707e-45 .. 3.40282346638528860e + 38.
INT
Этот тип данных используется для хранения 4-байтового целого числа в диапазоне от -2147483648 до 2147483647.
SMALLINT
Этот тип данных используется для хранения 2-байтового целого числа в диапазоне от -32768 до 32767.
STRING
Это используется для хранения строковых значений.
TIMESTAMP
Этот тип данных используется для представления точки во времени.
TINYINT
Этот тип данных используется для хранения 1-байтового целочисленного значения в диапазоне от -128 до 127.
VARCHAR
Этот тип данных используется для хранения символов переменной длины до максимальной длины 65 535.
ARRAY
Это сложный тип данных, и он используется для хранения переменного количества упорядоченных элементов.
карта
Это сложный тип данных, и он используется для хранения переменного числа пар ключ-значение.
Struct
Это сложный тип данных, используемый для представления нескольких полей одного элемента.
Комментарии в Impala
Комментарии в Impala аналогичны комментариям в SQL. В целом, у нас есть два типа комментариев на языках программирования, а именно однострочные комментарии и многострочные комментарии.
Однострочные комментарии — каждая отдельная строка, за которой следует «-», считается комментарием в Impala. Ниже приведен пример однострочных комментариев в Impala.
-- Hello welcome to tutorials point.
Многострочные комментарии — Все строки между / * и * / считаются многострочными комментариями в Impala. Ниже приведен пример многострочных комментариев в Impala.
/* Hi this is an example Of multiline comments in Impala */
Операторы в Impala аналогичны операторам в SQL. Обратитесь к нашему учебнику по SQL, перейдя по следующей ссылке sql-operator.
Импала — Создать базу данных
В Impala база данных — это конструкция, которая содержит связанные таблицы, представления и функции в своих пространствах имен. Он представлен в виде дерева каталогов в HDFS; он содержит таблицы разделов и файлы данных. В этой главе объясняется, как создать базу данных в Impala.
CREATE DATABASE Заявление
Оператор CREATE DATABASE используется для создания новой базы данных в Impala.
Синтаксис
Ниже приводится синтаксис оператора CREATE DATABASE .
CREATE DATABASE IF NOT EXISTS database_name;
Здесь IF NOT EXISTS является необязательным предложением. Если мы используем это предложение, база данных с заданным именем создается, только если не существует базы данных с таким именем.
пример
Ниже приведен пример оператора create database . В этом примере мы создали базу данных с именем 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 предоставляет список баз данных в Impala, поэтому вы можете проверить, создана ли база данных, используя инструкцию SHOW DATABASES. Здесь вы можете наблюдать недавно созданную базу данных 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 Path
Чтобы создать базу данных в файловой системе HDFS, вам необходимо указать место, где будет создана база данных.
CREATE DATABASE IF NOT EXISTS database_name LOCATION hdfs_path;
Создание базы данных с использованием браузера Hue
Откройте редактор запросов Impala и введите в него оператор CREATE DATABASE . После этого нажмите кнопку «Выполнить», как показано на следующем снимке экрана.
После выполнения запроса аккуратно переместите курсор в верхнюю часть выпадающего меню, и вы увидите символ обновления. Если щелкнуть символ обновления, список баз данных будет обновлен и к нему будут применены последние изменения.
верификация
Щелкните раскрывающийся список под заголовком БАЗА ДАННЫХ в левой части редактора. Там вы можете увидеть список баз данных в системе. Здесь вы можете наблюдать недавно созданную базу данных my_db, как показано ниже.
Если вы внимательно наблюдаете, вы можете видеть только одну базу данных, т.е. my_db в списке вместе с базой данных по умолчанию.
Импала — Бросить базу данных
Оператор DROP DATABASE Impala используется для удаления базы данных из 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, как показано ниже.
< 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 удаляет таблицы в указанной базе данных перед удалением.
пример
Предположим, что в 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.
Используя каскад , вы можете удалить эту базу данных напрямую (без удаления ее содержимого вручную), как показано ниже.
[quickstart.cloudera:21000] > DROP database sample cascade; Query: drop database sample cascade
Примечание. Вы не можете удалить « текущую базу данных » в Impala. Поэтому перед удалением базы данных вам необходимо убедиться, что текущий контекст настроен на базу данных, отличную от той, которую вы собираетесь удалить.
Удаление базы данных с использованием браузера Hue
Откройте редактор запросов Impala, введите в нем оператор DELETE DATABASE и нажмите кнопку «Выполнить», как показано ниже. Предположим, есть три базы данных, а именно, my_db, my_database и sample_database вместе с базой данных по умолчанию. Здесь мы удаляем базу данных с именем my_database.
После выполнения запроса аккуратно переместите курсор в верхнюю часть выпадающего меню. Затем вы найдете символ обновления, как показано на скриншоте ниже. Если щелкнуть символ обновления, список баз данных будет обновлен и к нему будут применены последние внесенные изменения.
верификация
Нажмите на раскрывающийся список под заголовком DATABASE в левой части редактора. Там вы можете увидеть список баз данных в системе. Здесь вы можете наблюдать недавно созданную базу данных my_db, как показано ниже.
Если вы внимательно наблюдаете, вы можете видеть только одну базу данных, т.е. my_db в списке вместе с базой данных по умолчанию.
Импала — Выберите базу данных
После подключения к Impala необходимо выбрать одну из доступных баз данных. Оператор USE DATABASE Impala используется для переключения текущего сеанса на другую базу данных.
Синтаксис
Ниже приводится синтаксис оператора USE .
USE db_name;
пример
Ниже приведен пример заявления USE . Прежде всего, давайте создадим базу данных с именем 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
В левой части редактора запросов Impala вы найдете раскрывающееся меню, как показано на следующем снимке экрана.
Если вы нажмете на выпадающее меню, вы найдете список всех баз данных в 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. При желании вы можете указать имя_базы_данных вместе с именем_таблицы .
пример
Ниже приведен пример оператора создания таблицы. В этом примере мы создали таблицу с именем 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 Tables дает список таблиц в текущей базе данных в 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
Откройте редактор запросов Impala и введите в него оператор CREATE Table . И нажмите кнопку «Выполнить», как показано на следующем снимке экрана.
После выполнения запроса аккуратно переместите курсор в верхнюю часть выпадающего меню, и вы увидите символ обновления. Если щелкнуть символ обновления, список баз данных будет обновлен, и к нему будут применены последние внесенные изменения.
верификация
Нажмите на раскрывающийся список под заголовком DATABASE в левой части редактора. Там вы можете увидеть список баз данных. Выберите базу данных my_db, как показано ниже.
При выборе базы данных my_db вы можете увидеть список таблиц в ней, как показано ниже. Здесь вы можете найти вновь созданную таблицу ученик, как показано ниже.
Импала — Вставить заявление
Оператор INSERT Impala состоит из двух пунктов — в и перезаписать . Оператор Insert с предложением into используется для добавления новых записей в существующую таблицу в базе данных.
Синтаксис
Существует два основных синтаксиса оператора INSERT :
вставить в table_name (column1, column2, column3, ... columnN) значения (значение1, значение2, значение3, ... значениеN);
Здесь column1, column2, … columnN — это имена столбцов в таблице, в которую вы хотите вставить данные.
Вы также можете добавлять значения без указания имен столбцов, но для этого необходимо убедиться, что порядок значений находится в том же порядке, что и столбцы в таблице, как показано ниже.
Insert into table_name values (value1, value2, value2);
CREATE TABLE — это ключевое слово, указывающее системе базы данных создать новую таблицу. Уникальное имя или идентификатор таблицы следует за оператором CREATE TABLE. При желании вы можете указать имя_базы_данных вместе с именем_таблицы .
пример
Предположим, мы создали таблицу с именем 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]> вставить в значения сотрудника (2, «Хилан», 25, «Дели», 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 );
После вставки значений таблица сотрудников в 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 | +----+----------+-----+-----------+--------+
Перезапись данных в таблице
Мы можем перезаписать записи таблицы, используя предложение overwrite. Перезаписанные записи будут окончательно удалены из таблицы. Ниже приводится синтаксис использования предложения перезаписи.
Insert overwrite table_name values (value1, value2, value2);
пример
Ниже приведен пример использования перезаписи предложения.
[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
При проверке таблицы вы можете заметить, что все записи сотрудника таблицы перезаписываются новыми записями, как показано ниже.
+----+------+-----+---------------+--------+ | id | name | age | address | salary | +----+------+-----+---------------+--------+ | 1 | Ram | 26 | Vishakhapatnam| 37000 | +----+------+-----+---------------+--------+
Вставка данных с помощью Hue Browser
Откройте редактор запросов Impala и введите в него оператор вставки . И нажмите кнопку «Выполнить», как показано на следующем снимке экрана.
После выполнения запроса / оператора эта запись добавляется в таблицу.
Импала — Выбрать заявление
Оператор Impala SELECT используется для извлечения данных из одной или нескольких таблиц в базе данных. Этот запрос возвращает данные в виде таблиц.
Синтаксис
Ниже приводится синтаксис оператора выбора Impala.
SELECT column1, column2, columnN from table_name;
Здесь column1, column2 … — это поля таблицы, значения которых вы хотите получить. Если вы хотите получить все поля, доступные в этом поле, вы можете использовать следующий синтаксис:
SELECT * FROM table_name;
пример
Предположим, у нас есть таблица с именем клиентов в 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
Вы можете получить идентификатор, имя и возраст всех записей таблицы клиентов, используя оператор выбора, как показано ниже —
[quickstart.cloudera:21000] > select id, name, age from customers;
При выполнении вышеупомянутого запроса Impala выбирает id, имя, возраст всех записей из указанной таблицы и отображает их, как показано ниже.
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
Вы также можете получить все записи из таблицы клиентов, используя запрос выбора, как показано ниже.
[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 и введите в нем команду выбора . И нажмите кнопку «Выполнить», как показано на следующем снимке экрана.
После выполнения запроса, если прокрутить вниз и выбрать вкладку « Результаты », вы увидите список записей указанной таблицы, как показано ниже.
Импала — Опишите заявление
Оператор description в Impala используется для описания таблицы. Результат этого оператора содержит информацию о таблице, такую как имена столбцов и их типы данных.
Синтаксис
Ниже приводится синтаксис оператора описания Impala.
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
Вы можете получить описание таблицы клиентов, используя оператор описания, как показано ниже —
[quickstart.cloudera:21000] > describe customer;
При выполнении вышеупомянутого запроса Impala выбирает метаданные указанной таблицы и отображает их, как показано ниже.
Query: describe customer +---------+--------+---------+ | name | type | comment | +---------+--------+---------+ | id | int | | | name | string | | | age | int | | | address | string | | | salary | bigint | | +---------+--------+---------+ Fetched 5 row(s) in 0.51s
Описание записей с использованием оттенка
Откройте редактор запросов Impala, введите в нем оператор описания и нажмите кнопку «Выполнить», как показано на следующем снимке экрана.
После выполнения запроса, если вы прокрутите вниз и выберете вкладку « Результаты », вы увидите метаданные таблицы, как показано ниже.
Импала — Альтер Стол
Оператор Alter table в Impala используется для внесения изменений в данную таблицу. Используя это утверждение, мы можем добавлять, удалять или изменять столбцы в существующей таблице, а также можем переименовывать ее.
Эта глава объясняет различные типы операторов alter с помощью синтаксиса и примеров. Прежде всего предположим, что у нас есть таблица с именем customer в базе данных 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 , вы можете найти в нем таблицу клиентов, как показано ниже.
[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 . Здесь мы меняем название таблицы клиентов на пользователей.
[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 . Вы можете найти таблицу с именем пользователи вместо клиентов .
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) в таблицу пользователей .
[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)
Если вы проверите схему пользователей таблицы, вы можете найти новые добавленные столбцы в ней, как показано ниже.
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
Если вы проверите схему пользователей таблицы, вы не сможете найти столбец с именем account_no, так как он был удален.
[quickstart.cloudera: 21000]> опишите пользователей; Запрос: опишите пользователей + ---------- + -------- + --------- + | имя | тип | комментарий | + ---------- + -------- + --------- + | id | int | | | имя | строка | | | возраст | int | | | адрес | строка | | | зарплата | bigint | | | номер телефона | bigint | | + ---------- + -------- + --------- + Получено 6 ряд (ов) за 0.11s
Изменение названия и типа столбца
Синтаксис
Основной синтаксис ALTER TABLE для изменения имени и типа данных столбца в существующей таблице выглядит следующим образом:
ALTER TABLE name CHANGE column_name new_name new_type
пример
Ниже приведен пример изменения имени и типа данных столбца с помощью оператора alter. Здесь мы меняем имя столбца phone_no на 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
Вы можете проверить метаданные пользователей таблицы, используя оператор описания . Вы можете заметить, что Импала внесла необходимые изменения в указанный столбец.
[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 и нажмите кнопку «Выполнить», как показано на следующем снимке экрана.
При выполнении вышеупомянутого запроса он изменит имя таблицы клиентов на пользователей . Таким же образом мы можем выполнить все запросы на изменение .
Импала — уронить стол
Оператор удаления таблицы Impala используется для удаления существующей таблицы в Impala. Этот оператор также удаляет базовые файлы HDFS для внутренних таблиц
ПРИМЕЧАНИЕ. — При использовании этой команды необходимо соблюдать осторожность, поскольку после удаления таблицы вся доступная в ней информация также будет потеряна навсегда.
Синтаксис
Ниже приведен синтаксис оператора DROP TABLE . Здесь IF EXISTS является необязательным предложением. Если мы используем это предложение, таблица с заданным именем удаляется, только если она существует. В противном случае никакие операции не будут выполняться.
DROP table database_name.table_name;
Если вы попытаетесь удалить таблицу, которая не существует без предложения IF EXISTS, будет сгенерирована ошибка. При желании вы можете указать имя_базы_данных вместе с именем_состояния
пример
Давайте сначала проверим список таблиц в базе данных my_db, как показано ниже.
[quickstart.cloudera:21000] > show tables; Query: show tables +------------+ | name | +------------+ | customers | | employee | | student | +------------+ Fetched 3 row(s) in 0.11s
Из приведенного выше результата видно, что база данных my_db содержит 3 таблицы
Ниже приведен пример оператора удаления таблицы . В этом примере мы удаляем таблицу с именем student из базы данных my_db .
[quickstart.cloudera:21000] > drop table if exists my_db.student;
При выполнении вышеупомянутого запроса таблица с указанным именем будет удалена, отображая следующий вывод.
Query: drop table if exists student
верификация
Запрос show Tables дает список таблиц в текущей базе данных в 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
Откройте редактор запросов Impala и введите в него опущенный оператор таблицы . И нажмите кнопку «Выполнить», как показано на следующем снимке экрана.
После выполнения запроса аккуратно переместите курсор в верхнюю часть выпадающего меню, и вы увидите символ обновления. Если щелкнуть символ обновления, список баз данных будет обновлен, и к нему будут применены последние внесенные изменения.
верификация
Нажмите на раскрывающийся список под заголовком DATABASE в левой части редактора. Там вы можете увидеть список баз данных; выберите базу данных my_db, как показано ниже.
При выборе базы данных my_db вы можете увидеть список таблиц в ней, как показано ниже. Здесь вы не можете найти удаленную таблицу ученик в списке, как показано ниже.
Импала — усечь таблицу
Оператор Tralaate Table Impala используется для удаления всех записей из существующей таблицы.
Вы также можете использовать команду DROP TABLE, чтобы удалить полную таблицу, но она удалит всю структуру таблицы из базы данных, и вам потребуется заново создать эту таблицу, если вы хотите сохранить некоторые данные.
Синтаксис
Ниже приведен синтаксис оператора усеченной таблицы.
truncate table_name;
пример
Предположим, у нас в 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 с использованием оператора усечения . Здесь мы удаляем все записи таблицы с именем клиентов .
[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 и введите в него усеченный оператор. И нажмите кнопку «Выполнить», как показано на следующем снимке экрана.
После выполнения запроса / оператора все записи из таблицы удаляются.
Импала — Показать Столы
Оператор 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
Распечатка таблиц с использованием Hue
Откройте редактор запросов Impala , выберите контекст my_db, введите в нем оператор show tables и нажмите кнопку выполнения, как показано на следующем снимке экрана.
После выполнения запроса, если прокрутить вниз и выбрать вкладку « Результаты », вы увидите список таблиц, как показано ниже.
Импала — Создать представление
Представление — это не что иное, как утверждение языка запросов Impala, которое хранится в базе данных со связанным именем. Это состав таблицы в виде предопределенного SQL-запроса.
Представление может содержать все строки таблицы или выбранные. Представление может быть создано из одной или нескольких таблиц. Представления позволяют пользователям —
-
Структурируйте данные так, чтобы пользователи или классы пользователей находили естественные или интуитивно понятные.
-
Ограничьте доступ к данным таким образом, чтобы пользователь мог видеть и (иногда) изменять именно то, что ему нужно, и не более.
-
Суммируйте данные из различных таблиц, которые можно использовать для создания отчетов.
Структурируйте данные так, чтобы пользователи или классы пользователей находили естественные или интуитивно понятные.
Ограничьте доступ к данным таким образом, чтобы пользователь мог видеть и (иногда) изменять именно то, что ему нужно, и не более.
Суммируйте данные из различных таблиц, которые можно использовать для создания отчетов.
Вы можете создать вид, используя оператор Impala Create View .
Синтаксис
Ниже приведен синтаксис оператора создания представления. ЕСЛИ НЕ СУЩЕСТВУЕТ , это необязательный пункт. Если мы используем это предложение, создается таблица с заданным именем, только если в указанной базе данных с таким именем нет существующей таблицы.
Create View IF NOT EXISTS view_name as Select statement
пример
Например, предположим, что у нас есть таблица с именем customer в базе данных 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
Ниже приведен пример создания оператора представления. В этом примере мы создаем представление в виде таблицы клиентов, которая содержит столбцы, имя и возраст.
[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
верификация
Вы можете проверить содержимое только что созданного представления, используя оператор выбора, как показано ниже.
[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
Создание представления с использованием Hue
Откройте редактор запросов Impala, выберите контекст my_db , введите в нем оператор Create View и нажмите кнопку execute, как показано на следующем снимке экрана.
После выполнения запроса, если вы прокрутите вниз, вы увидите представление с именем sample, созданное в списке таблиц, как показано ниже.
Импала — Alter View
Оператор Alter View в Impala используется для изменения вида. Используя этот оператор, вы можете изменить имя представления, изменить базу данных и связанный с ней запрос.
Поскольку представление является логической конструкцией, запрос на изменение представления не повлияет на физические данные.
Синтаксис
Ниже приводится синтаксис оператора Alter View
ALTER VIEW database_name.view_name as Выберите оператор
пример
Например, предположим, что у нас есть представление с именем customer_view в базе данных my_db в Impala со следующим содержимым.
+----------+-----+ | name | age | +----------+-----+ | Komal | 22 | | Khilan | 25 | | Ramesh | 32 | | Hardik | 27 | | Chaitali | 25 | | kaushik | 23 | +----------+-----+
Ниже приведен пример изменения вида оператора. В этом примере мы добавляем столбцы id, name и salary вместо name и age в customer_view .
[quickstart.cloudera:21000] > Alter view customers_view as select id, name, salary from customers;
При выполнении вышеуказанного запроса Impala вносит указанные изменения в customer_view , отображая следующее сообщение.
Query: alter view customers_view as select id, name, salary from customers
верификация
Вы можете проверить содержимое представления с именем customer_view , используя оператор выбора, как показано ниже.
[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 и нажмите кнопку выполнения, как показано на следующем снимке экрана.
После выполнения запроса представление с именем sample будет соответствующим образом изменено.
Импала — брось взгляд
Запрос Impala « Drop Drop» используется для удаления существующего представления. Так как представление является логической конструкцией, запрос сбрасывания представления не повлияет на физические данные.
Синтаксис
Ниже приведен синтаксис оператора отбрасывания.
DROP VIEW database_name.view_name;
пример
Например, предположим, что у нас есть представление с именем customer_view в базе данных my_db в Impala со следующим содержимым.
+----------+-----+ | name | age | +----------+-----+ | Komal | 22 | | Khilan | 25 | | Ramesh | 32 | | Hardik | 27 | | Chaitali | 25 | | kaushik | 23 | +----------+-----+
Ниже приведен пример оператора Drop View . В этом примере мы пытаемся удалить представление с именем customer_view с помощью запроса отбрасывания .
[quickstart.cloudera:21000] > Drop view customers_view;
При выполнении вышеупомянутого запроса Impala удаляет указанное представление, отображая следующее сообщение.
Query: drop view customers_view
верификация
Если вы проверите список таблиц с помощью оператора show tables , вы увидите, что представление с именем 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 . Этот список содержит все таблицы и представления в текущей базе данных. Из этого списка вы можете обнаружить, что указанный вид был удален.
Импала — заказ по пункту
Предложение Impala ORDER BY используется для сортировки данных в порядке возрастания или убывания на основе одного или нескольких столбцов. Некоторые базы данных сортируют результаты запроса в порядке возрастания по умолчанию.
Синтаксис
Ниже приведен синтаксис предложения ORDER BY.
select * from table_name ORDER BY col_name [ASC|DESC] [NULLS FIRST|NULLS LAST]
Вы можете расположить данные в таблице в порядке возрастания или убывания, используя ключевые слова ASC или DESC соответственно.
Таким же образом, если мы используем NULLS FIRST, все нулевые значения в таблице располагаются в верхних строках; и если мы используем NULLS LAST, строки, содержащие нулевые значения, будут расположены последними.
пример
Предположим, у нас есть таблица с именем customer в базе данных 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
Ниже приведен пример размещения данных в таблице клиентов в порядке возрастания их идентификаторов с использованием предложения 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
Таким же образом вы можете расположить данные таблицы клиентов в порядке убывания, используя пункт 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
Импала — Группировка по пункту
Предложение Impala GROUP BY используется в сотрудничестве с оператором SELECT для организации идентичных данных в группы.
Синтаксис
Ниже приведен синтаксис предложения GROUP BY.
select data from table_name Group BY col_name;
пример
Предположим, у нас есть таблица с именем customer в базе данных 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
Импала — с оговоркой
Предложение Имея в Impala позволяет вам указать условия, которые фильтруют, какие групповые результаты появляются в окончательных результатах.
В общем случае, предложение Имеется вместе с предложением group by ; он помещает условия в группы, созданные предложением GROUP BY.
Синтаксис
Ниже приводится синтаксис предложения « Имея» .
select * from table_name ORDER BY col_name [ASC|DESC] [NULLS FIRST|NULLS LAST]
пример
Предположим, у нас есть таблица с именем customer в базе данных 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
Ниже приведен пример использования предложения Имея в Impala —
[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 в Impala.
select * from table_name order by id limit numerical_expression;
пример
Предположим, у нас есть таблица с именем customer в базе данных 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
Импала — офсетная оговорка
В общем случае строки в наборе результатов запроса на выборку начинаются с 0. Используя предложение смещения , мы можем решить, откуда следует рассматривать выходные данные. Например, если мы выберем смещение равным 0, результат будет как обычно, а если мы выберем смещение равным 5, результат начнется с пятой строки.
Синтаксис
Ниже приводится синтаксис предложения смещения в Impala.
select data from table_name Group BY col_name;
пример
Предположим, у нас есть таблица с именем customer в базе данных 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
Ниже приведен пример предложения смещения . Здесь мы получаем записи в таблице клиентов в порядке их идентификаторов и печатаем первые четыре строки, начиная с 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
Таким же образом вы можете получить четыре записи из таблицы клиентов, начиная со строки со смещением 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
Импала — Союзный пункт
Вы можете объединить результаты двух запросов, используя предложение Impala Union .
Синтаксис
Ниже приводится синтаксис предложения Union в Impala.
query1 union query2;
пример
Предположим, у нас есть таблица с именем customer в базе данных 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
Ниже приведен пример предложения союза в Impala. В этом примере мы размещаем записи в обеих таблицах в порядке их идентификаторов и ограничиваем их количество на 3, используя два отдельных запроса, и объединяем эти запросы с помощью предложения 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
Импала — с оговоркой
В случае, если запрос слишком сложен, мы можем определить псевдонимы для сложных частей и включить их в запрос, используя предложение Impala with .
Синтаксис
Ниже приводится синтаксис предложения with в Impala.
with x as (select 1), y as (select 2) (select * from x union y);
пример
Предположим, у нас есть таблица с именем customer в базе данных 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 в Impala. В этом примере мы показываем записи как сотрудников, так и клиентов, чей возраст превышает 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
Импала — Отличный Оператор
Отдельный оператор в Impala используется для получения уникальных значений путем удаления дубликатов.
Синтаксис
Ниже приводится синтаксис отдельного оператора.
select distinct columns… from table_name;
пример
Предположим, что у нас есть таблица с именами клиентов в Impala, и ее содержимое выглядит следующим образом:
[quickstart.cloudera:21000] > select distinct id, name, age, salary from customers; Query: select distinct id, name, age, salary from customers
Здесь вы можете наблюдать зарплату клиентов Ramesh и Chaitali, введенных дважды, и используя отдельный оператор, мы можем выбрать уникальные значения, как показано ниже.
[quickstart.cloudera:21000] > select distinct name, age, address from customers;
При выполнении вышеупомянутый запрос дает следующий вывод.