Интеграция с Apache Hive
Использование интеграции OpenLineage с Apache Hive.
Требования
- Apache Hive 3.1.3 (версия 4.0 пока не поддерживается)
- OpenLineage 1.34.0 или выше, рекомендуется 1.35.0+
Ограничения
-
Hive CLI не поддерживается. Требуется HiveServer2.
-
В версии OpenLineage 1.34.0 только следующие запросы обрабатываются как содержащие данные о lineage:
-
CREATE TABLE .. AS SELECT ... INSERT INTO ... SELECT ...
Другие типы запросов игнорируются интеграцией OpenLineage, включая:
CREATE TABLE ...,ALTER TABLE ...,TRUNCATE TABLE ...,DROP TABLE ....INSERT INTO ... VALUES ...,UPDATE,DELETE,MERGE.LOAD DATA,EXPORT,IMPORT.-
SELECTданных напрямую в клиент JDBC. -
Hive отправляет события при запуске пользовательской сессии, но не при ее завершении. Поэтому все сессии Hive в Data.Rentgen имеют статус
STARTED.
Отображение сущностей
- Пользователь Hive + IP пользователя → Задача (Job) Data.Rentgen
- Сессия Hive → Запуск (Run) Data.Rentgen
- Запрос Hive → Операция (Operation) Data.Rentgen
Установка
Скачайте следующие JAR-файлы и поместите их в директорию /path/to/jars/ на машине с HiveServer2:
Настройка
Измените конфигурационный файл hive-site.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- Настройка Hive, чтобы не выдавал ошибки о неизвестных свойствах -->
<property>
<name>hive.conf.validation</name>
<value>false</value>
</property>
<!-- Укажите путь к скачанным JAR-файлам -->
<property>
<name>hive.aux.jars.path</name>
<value>/path/to/jars/</value>
</property>
<!-- Включение интеграции OpenLineage на основе хуков Hive -->
<property>
<name>hive.server2.session.hook</name>
<value>io.openlineage.hive.hooks.HiveOpenLineageHook</value>
</property>
<property>
<name>hive.exec.post.hooks</name>
<value>io.openlineage.hive.hooks.HiveOpenLineageHook</value>
</property>
<property>
<name>hive.exec.failure.hooks</name>
<value>io.openlineage.hive.hooks.HiveOpenLineageHook</value>
</property>
<!-- Настройка транспорта OpenLineage через Kafka -->
<property>
<name>hive.openlineage.transport.type</name>
<value>kafka</value>
</property>
<property>
<name>hive.openlineage.transport.topicName</name>
<value>input.runs</value>
</property>
<property>
<name>hive.openlineage.transport.properties.bootstrap.servers</name>
<!-- Адрес должен быть доступен с HiveServer2 -->
<value>localhost:9093</value>
</property>
<property>
<name>hive.openlineage.transport.properties.security.protocol</name>
<value>SASL_PLAINTEXT</value>
</property>
<property>
<name>hive.openlineage.transport.properties.sasl.mechanism</name>
<value>SCRAM-SHA-256</value>
</property>
<property>
<name>hive.openlineage.transport.properties.sasl.jaas.config</name>
<value>org.apache.kafka.common.security.scram.ScramLoginModule required username="data_rentgen" password="changeme";</value>
</property>
<property>
<name>hive.openlineage.transport.properties.key.serializer</name>
<value>org.apache.kafka.common.serialization.StringSerializer</value>
</property>
<property>
<name>hive.openlineage.transport.properties.value.serializer</name>
<value>org.apache.kafka.common.serialization.StringSerializer</value>
</property>
<property>
<name>hive.openlineage.transport.properties.compression.type</name>
<value>zstd</value>
</property>
<property>
<name>hive.openlineage.transport.properties.acks</name>
<value>all</value>
</property>
<!-- Установка пространства имен по умолчанию для задач -->
<property>
<name>hive.openlineage.namespace</name>
<value>hive://my.hive.host:10000</value>
</property>
</configuration>
Сбор и отправка данных о lineage
Подключитесь к интерфейсу JDBC вашего экземпляра HiveServer2, например, с помощью beeline или DBeaver.
После выполнения запроса интеграция отправит события о lineage в DataRentgen.
Note
По умолчанию задача (Job) создается с именем {username}@{clientIp}. Вы можете переопределить это имя, выполнив следующую команду:
SET hive.openlineage.job.name=my_session_name;
Просмотр результатов
Просмотрите страницы пользовательского интерфейса Jobs, чтобы увидеть, какая информация была извлечена OpenLineage и DataRentgen.







