借助开源 Hive-BigQuery 连接器,您的 Apache Hive 工作负载可以从 BigQuery 和 BigLake 表中读取数据以及向其中写入数据。您可以将数据存储在 BigQuery 存储空间中,也可以以开源数据格式存储在 Cloud Storage 中。
Hive-BigQuery 连接器实现了 Hive Storage Handler API,以允许 Hive 工作负载与 BigQuery 和 BigLake 表集成。Hive 执行引擎会处理计算操作(例如汇总和联接),而连接器会管理与存储在 BigQuery 或与 BigLake 关联的 Cloud Storage 存储分区中的数据的互动。
下图展示了 Hive-BigQuery 连接器如何介于计算层和数据层之间。
使用场景
以下是 Hive-BigQuery 连接器在常见数据驱动型场景中的一些用途:
数据迁移。您计划将 Hive 数据仓库迁移到 BigQuery,然后逐步将 Hive 查询转换为 BigQuery SQL 方言。由于数据仓库的大小和关联的应用数量众多,您预计迁移需要花费大量时间,并且您需要确保迁移操作期间的连续性。工作流如下:
- 您将数据迁移到 BigQuery
- 借助该连接器,您可以访问和运行原始 Hive 查询,同时逐步将 Hive 查询转换为符合 ANSI 标准的 BigQuery SQL 方言。
- 完成迁移和转换后,您可以弃用 Hive。
Hive 和 BigQuery 工作流。您计划使用 Hive 处理某些任务,并使用 BigQuery 处理可从其功能(例如 BigQuery BI Engine 或 BigQuery ML)获益的工作负载。您可以使用该连接器将 Hive 表联接到 BigQuery 表。
依赖于开源软件 (OSS) 堆栈。为避免供应商锁定,您可以为数据仓库使用完整的 OSS 堆栈。您的流量套餐如下:
特性
您可以使用 Hive-BigQuery 连接器处理 BigQuery 数据并执行以下任务:
- 使用 MapReduce 和 Tez 执行引擎运行查询。
- 从 Hive 创建和删除 BigQuery 表。
- 将 BigQuery 和 BigLake 表与 Hive 表联接。
- 使用 Storage Read API 流和 Apache Arrow 格式从 BigQuery 表中快速读取
- 您可以使用以下方法将数据写入 BigQuery:
- 使用 BigQuery Storage Write API 在待处理模式下进行直接写入。对于需要较短写入延迟时间的工作负载(例如刷新时间较短的近乎实时信息中心),请使用此方法。
- 通过将临时 Avro 文件暂存到 Cloud Storage,然后使用 Load Job API 将文件加载到目标表中,实现间接写入。由于 BigQuery 加载作业不会产生费用,因此这种方法的费用低于直接方法。由于此方法速度较慢,因此最适合用于非时间关键型工作负载
访问 BigQuery 时间分区和聚簇表。以下示例定义了 Hive 表与在 BigQuery 中分区和分片的表之间的关系。
CREATE TABLE my_hive_table (int_val BIGINT, text STRING, ts TIMESTAMP) STORED BY 'com.google.cloud.hive.bigquery.connector.BigQueryStorageHandler' TBLPROPERTIES ( 'bq.table'='myproject.mydataset.mytable', 'bq.time.partition.field'='ts', 'bq.time.partition.type'='MONTH', 'bq.clustered.fields'='int_val,text' );
修剪列,以免从数据层检索不必要的列。
使用谓词推送功能在 BigQuery 存储层预过滤数据行。此技术可以减少穿越网络的数据量,从而显著提高整体查询性能。
自动将 Hive 数据类型转换为 BigQuery 数据类型。
与 Spark SQL 集成。
与 Apache Pig 和 HCatalog 集成。
开始使用
请参阅相关说明,了解如何在 Hive 集群上安装和配置 Hive-BigQuery 连接器。