BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс Современная архитектура хранилища данных » Использование Trino совместно с Dataproc

Использование Trino совместно с Dataproc

Trino (ранее Presto) - это распределенный механизм SQL-запросов, предназначенный для обработки больших массивов данных, распределенных по одному или нескольким разнородным источникам данных. Trino может выполнять запросы к Hive, MySQL, Kafka и другим источникам данных через коннекторы. В этом руководстве показано, как:

  • установить Trino на кластер Dataproc
  • Запрашивать публичные данные с помощью клиента Trino, установленного на локальной машине, который взаимодействует со службой Trino
  • Выполнять запросы из Java-приложения, которое взаимодействует с сервисом Trino на через драйвер Trino Java JDBC.

 

 

Цели

  • создание кластера Dataproc с установленным Trino
  • подготовка данных. В этом руководстве использованы данные о поездах на такси в Чикаго, доступные в BigQuery.
  1. Извлечь данные из BigQuery
  2. Загрузить данные в Cloud Storagе  в формате файлов CSV
  3. Преобразовать данные:

 

  • Представьте данные в виде внешней таблицы Hive, чтобы сделать их доступными для запросов в Trino
  • Преобразуйте данные из формата CSV в формат Parquet  (для ускорения обработки запросов)
  • Отправьте запросы Trino CLI или кода приложения с помощью туннеля SSH или драйвера Trino JDBC координатору Trino, работающему на кластере
  • Проверьте журналы Trino через веб-интерфейс Trino.

 

 

Затраты

В этом документе используются следующие платные компоненты Google Cloud:

  • Dataproc
  • Cloud Storage
  • BigQuery

 

Для расчета примерной стоимости проекта используйте специальный калькулятор.

 

Перед началом работы

Если Вы еще не сделали этого, создайте проект Google Cloud и бакет Cloud Storage (для хранения данных, используемых в этом руководстве)

 

Настройка проекта

  1. В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud.

 

NB: Если Вы не планируете хранить ресурсы, созданные в этой процедуре, создайте отдельный проект, не выбирайте существующий. После выполнения этих шагов Вы сможете удалить проект, удалив все связанные с ним ресурсы.

  1. Выберите  Отборщик проектов (Project selector)
  2. Убедитесь в том, что для Вашего проекта Cloud включен биллинг.
  3. Включите API Dataproc, Compute Engine, Cloud Storage и BigQuery.
  4. Включите API
  5. Установите the Google Cloud CLI. Для инициализации  gcloud CLI выполните следующую команду:
gcloud init
 

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

  1. В консоли Google Cloud перейдите на страницу Cloud Storage Buckets.
  2. Перейдите на страницу бакета
  3. Щелкните на Создать бакет.
  4. На открывшейся странице введите название бакета. Нажмите Продолжить.
  5. Присвоить бакету имя.
  6. Выберите, где Вы будете хранить данные:
    • Выберите опцию Тип локации.
    • Выберите опцию Локация.
  7. На вкладке Выбрать класс хранения для Ваших данных выберите класс хранения.
  8. На вкладке Выбрать способ контроля доступа к объектам данных выберите опцию Контроль доступа.
  9. В качестве Расширенных настроек (по желанию) укажите метод шифрования,  политику хранения или метки бакета.
  10. Нажмите Создать.

 

Создание кластера Dataproc

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

Создайте кластер Dataproc, используя флаг optional-components (доступен на образе версии 2.1 и новее) для установки дополнительного компонента Trino на кластер и флаг enable-component-gateway для включения шлюза компонентов, который позволит получить доступ к веб-интерфейсу Trino из консоли Google Cloud.

  1. Установите переменные окружения:
    • PROJECT:  ID проекта
    • BUCKET_NAME: имя бакета облачного хранилища, созданного на этапе Перед началом работы
    • REGION: регион, в котором будет создан кластер, например, "us-west1"
    • WORKERS: рекомендуем использовать 3 - 5 рабочих узла


export PROJECT=project-id
export WORKERS=number
export REGION=region
export BUCKET_NAME=bucket-name

 

  1. Для создания кластера запустите Google Cloud CLI.
gcloud beta dataproc clusters create trino-cluster \
 --project=${PROJECT} \
 --region=${REGION} \
 --num-workers=${WORKERS} \
--scopes=cloud-platform \
--optional-components=TRINO \
 --image-version=2.1  \
 --enable-component-gateway

 

Мы не рекомендуем создавать  высокодоступный кластер (кластер с несколькими мастер - узлами), поскольку координатор запускается на мастер - узле 0, все остальные мастер - узлы будут простаивать.

 

Подготовка данных

  1. Экспортируйте набор данных о поездках на такси в Чикаго  в облачное хранилище в формате CSV, а затем создайте внешнюю таблицу Hive для того, чтобы на эти данные можно было ссылаться.
  2. На локальной машине выполните команду, которая позволит импортировать данные о такси из BigQuery в виде CSV-файлов без заголовков бакет облачного хранилища, которое Вы создали на этапе Перед началом работы.
bq --location=us extract --destination_format=CSV \
 --field_delimiter=',' --print_header=false \
  "bigquery-public-data:chicago_taxi_trips.taxi_trips" \
   gs://${BUCKET_NAME}/chicago_taxi_trips/csv/shard-*.csv
 

3. 

Создайте внешнюю таблицу Hive под названием chicago_taxi_trips_csv.

gcloud dataproc jobs submit hive \
--cluster trino-cluster \
 --region=${REGION} \
--execute "
 CREATE EXTERNAL TABLE chicago_taxi_trips_csv(
 unique_key   STRING,
 taxi_id  STRING,
 trip_start_timestamp  TIMESTAMP,
 trip_end_timestamp  TIMESTAMP,
trip_seconds  INT,
trip_miles   FLOAT,
pickup_census_tract  INT,
dropoff_census_tract  INT,
pickup_community_area  INT,
dropoff_community_area  INT,
 fare  FLOAT,
tips  FLOAT,
tolls  FLOAT,
extras  FLOAT,
trip_total  FLOAT,
payment_type  STRING,
company  STRING,
pickup_latitude  FLOAT,
pickup_longitude  FLOAT,
pickup_location  STRING,
dropoff_latitude  FLOAT,
dropoff_longitude  FLOAT,
dropoff_location  STRING)
ROW FORMAT DELIMITED
 FIELDS TERMINATED BY ','
STORED AS TEXTFILE
location 'gs://${BUCKET_NAME}/chicago_taxi_trips/csv/';"

 

  1. Проверьте создание внешней таблицы Hive. Если Ваш кластер состоит из 3 или менее узлов, этот запрос может занять несколько минут. Вы можете пропустить этот шаг и проверить только создание конечного файла Parquet, описанного ниже. 
gcloud dataproc jobs submit hive \
--cluster trino-cluster \
--region=${REGION} \
--execute "SELECT COUNT(*) FROM chicago_taxi_trips_csv;"
 
6.

 

  1. Загрузите данные из таблицы Hive CSV в таблицу Hive Parquet.
gcloud dataproc jobs submit hive \
 --cluster trino-cluster \
--region=${REGION} \
 --execute "
 INSERT OVERWRITE TABLE chicago_taxi_trips_parquet
SELECT * FROM chicago_taxi_trips_csv;"

 

  1. Убедитесь в том, что данные загрузились правильно.
gcloud dataproc jobs submit hive \
--cluster trino-cluster \
--region=${REGION} \
--execute "SELECT COUNT(*) FROM chicago_taxi_trips_parquet;"

 

Выполните запросы

Вы можете запускать запросы локально из Trino CLI или из приложения.

 

Запросы Trino CLI

В этом разделе показано, как выполнять запросы к набору данных Hive Parquet taxi с помощью Trino CLI.

  1. Выполните следующую команду, которая поможет Вам подключиться по SSH к главному узлу кластера. Во время выполнения команды локальный терминал перестанет отвечать на запросы.
gcloud compute ssh trino-cluster-m
 
  1. В окне терминала SSH на главном узле кластера запустите Trino CLI, который подключается к серверу Trino, запущенному на главном узле.
trino --catalog hive --schema default
 
  1. В  trino:default  убедитесь в том, что Trino может найти таблицы Hive.
show tables;
Table
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
chicago_taxi_trips_csv
chicago_taxi_trips_parquet
(2 rows)

 

  1. Выполните запросы из промта  trino:default и сравните производительность запросов к данным Parquet и CSV.

 

Данные Parquet

select count(*) from chicago_taxi_trips_parquet where trip_miles > 50;
 _col0
‐‐‐‐‐‐‐‐
117957

(1 row) 
Query 20180928_171735_00006_2sz8c, FINISHED, 3 nodes
Splits: 308 total, 308 done (100.00%)
0:16 [113M rows, 297MB] [6.91M rows/s, 18.2MB/s]

 

Данные CSV

select count(*) from chicago_taxi_trips_csv where trip_miles > 50;
_col0
‐‐‐‐‐‐‐‐
117957
(1 row) 

Query 20180928_171936_00009_2sz8c, FINISHED, 3 nodes
Splits: 881 total, 881 done (100.00%)
0:47 [113M rows, 41.5GB] [2.42M rows/s, 911MB/s]

 

Приложение Java

Запросы из приложения Java с помощью драйвера Trino Java JDBC: 1. Скачайте драйвер Trino Java JDBC  1. В Maven pom.xml добавьте зависимость trino-jdbc.

<dependency>
  <groupId>io.trino</groupId>
  <artifactId>trino-jdbc</artifactId>
  <version>376</version>
</dependency>

 

Образец кода Java

package dataproc.codelab.trino;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class TrinoQuery {
  private static final String URL = "jdbc:trino://trino-cluster-m:8080/hive/default";
  private static final String SOCKS_PROXY = "localhost:1080";
  private static final String USER = "user";
  private static final String QUERY =
      "select count(*) as count from chicago_taxi_trips_parquet where trip_miles > 50";
  public static void main(String[] args) {
    try {
      Properties properties = new Properties();
      properties.setProperty("user", USER);
      properties.setProperty("socksProxy", SOCKS_PROXY);
      Connection connection = DriverManager.getConnection(URL, properties);
      try (Statement stmt = connection.createStatement()) {
        ResultSet rs = stmt.executeQuery(QUERY);
        while (rs.next()) {
          int count = rs.getInt("count");
          System.out.println("The number of long trips: " + count);
        }
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }
}

 

Ведение журнала и мониторинг

Ведение журнала

Журналы Trino находятся по адресу /var/log/trino/ на главном и рабочих узлах кластера.

 

Мониторинг

Trino раскрывает информацию о времени выполнения запросов через специальные таблицы. Для просмотра данных таблицы времени выполнения выполните следующий запрос в сеансе Trino (из промта trino:default):

select * FROM system.runtime.nodes;

 

Очис​тка

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

 

Удаление проекта

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

Внимание: последствия удаления проекта:

  • Все, что было в проекте, удаляется. Если Вы использовали существующий проект для выполнения задач, описанных в этом документе, при его удалении удаляются и все другие работы, выполненные в рамках проекта.
  • Пользовательские идентификаторы проекта теряются. При создании этого проекта Вы создали пользовательский идентификатор проекта, который, возможно, захотите использовать в будущем. Чтобы сохранить URL-адреса, использующие идентификатор проекта, например URL-адрес appspot.com, удалите выбранные ресурсы внутри проекта, не удаляйте весь проект.

 

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

  1. В консоли Google Cloud перейдите на страницу Управление ресурсами.
  2. Управление ресурсами
  3. В списке проектов выберите проект, который вы хотите удалить, а затем нажмите кнопку Удалить.
  4. В диалоговом окне введите идентификатор проекта, а затем нажмите Закрыть, чтобы удалить проект.

 

Удаление кластера

gcloud dataproc clusters delete --project=${PROJECT} trino-cluster \
 --region=${REGION}

 

Удаление бакета

gcloud storage rm gs://${BUCKET_NAME} --recursive

 

Узнать стоимость решенияЗапросить видео презентацию

← Предыдущая статья
Что такое Trino и почему он незаменим при обработке Big Data
Следующая статья →
Кластеры высокой доступности Trino в Goldman Sachs

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • Компания ООО "Комус" - один из лидеров российского рынка оптовых продаж офисных товаров и техники. Компания поставляет широкий ассортимент продукции - от канцелярских принадлежностей до компьютерной техники и офисной мебели.

  • KERAMA MARAZZI — международный бренд, входящий в число лидеров глобального рынка керамики. Бизнес компании охватывает весь процесс создания керамических изделий, от глиняных карьеров до фирменной розницы во всех крупных городах РФ и за рубежом.

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

  • Российский филиал одного их ведущих мировых производителей и дистрибьютеров косметики Estee Lauder Companies Inc. выбрал аналитическую платформу Loginom для предиктивной аналитики продаж как в офлайн-, так и в онлайн-канале.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.