钩子

Sqoop

qianmoQqianmoQ· 更新于 2026-09-27· 阅读 6 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

Apache Sqoop 的 Apache Atlas Hook

Sqoop 模型

Sqoop 模型包含以下类型:

  • 实体类型:

    • sqoop_process

      • 超类型:Process(过程)
      • 属性:qualifiedName、name、description、owner、inputs、outputs、operation、commandlineOpts、startTime、endTime、userName
    • sqoop_dbdatastore

      • 超类型:DataSet(数据集)
      • 属性:qualifiedName、name、description、owner、dbStoreType、storeUse、storeUri、source
  • 枚举类型:

    • sqoop_operation_type

      • 取值:IMPORT、EXPORT、EVAL
    • sqoop_dbstore_usage

      • 取值:TABLE、QUERY、PROCEDURE、OTHER

Sqoop 实体在 Atlas 中通过唯一属性 qualifiedName 进行创建和去重,其取值应按以下格式进行格式化。

sqoop_process.qualifiedName:     sqoop <operation> --connect <url> {[--table <tableName>] || [--database <databaseName>]} [--query <storeQuery>]
sqoop_dbdatastore.qualifiedName: <storeType> --url <storeUri> {[--table <tableName>] || [--database <databaseName>]} [--query <storeQuery>]  --hive-<operation> --hive-database <databaseName> [--hive-table <tableName>] --hive-cluster <clusterName>

Sqoop Hook

Sqoop 新增了 SqoopJobDataPublisher,用于在导入作业完成后向 Atlas 发布数据。目前 SqoopHook 仅支持 hiveImport。它用于按照上文所述的模型向 Atlas 中添加实体。

请按照以下步骤在 Hive 中设置 Atlas hook:

在 Sqoop 中添加以下属性以启用 Atlas hook:

  • 通过添加以下内容,在 <sqoop-conf>/sqoop-site.xml 中设置 Atlas hook:
<property>
     <name>sqoop.job.data.publish.class</name>
     <value>org.apache.atlas.sqoop.hook.SqoopHook</value>
   </property>
  • 解压 apache-atlas-${project.version}-sqoop-hook.tar.gz
  • 执行 cd apache-atlas-sqoop-hook-${project.version}
  • 将 apache-atlas-sqoop-hook-${project.version}/hook/sqoop 文件夹中的全部内容复制到 <atlas package>/hook/sqoop
  • 将 <atlas-conf>/atlas-application.properties 复制到 sqoop 的配置目录 <sqoop-conf>/ 中
  • 在 sqoop 的 lib 目录中为 <atlas package>/hook/sqoop/*.jar 创建链接

atlas-application.properties 中的以下属性用于控制线程池和通知相关的配置:

atlas.hook.sqoop.synchronous=false # whether to run the hook synchronously. false is recommended to avoid delays in Sqoop operation completion. Default: false
atlas.hook.sqoop.numRetries=3      # number of retries for notification failure. Default: 3
atlas.hook.sqoop.queueSize=10000   # queue size for the threadpool. Default: 10000
atlas.cluster.name=primary # clusterName to use in qualifiedName of entities. Default: primary
atlas.kafka.zookeeper.connect=                    # Zookeeper connect URL for Kafka. Example: localhost:2181
atlas.kafka.zookeeper.connection.timeout.ms=30000 # Zookeeper connection timeout. Default: 30000
atlas.kafka.zookeeper.session.timeout.ms=60000    # Zookeeper session timeout. Default: 60000
atlas.kafka.zookeeper.sync.time.ms=20             # Zookeeper sync time. Default: 20

Kafka 通知生产者的其他配置可以通过在配置名称前加上 "atlas.kafka." 前缀来指定。有关 Kafka 生产者支持的配置列表,请参阅 Kafka Producer Configs

注意事项

  • 目前 sqoop hook 仅采集以下 sqoop 操作

    • hiveImport

评论

登录后参与评论

正在加载评论…