BigQuery 中的 Hive 分区 LAYOUT 表格式

Posted

技术标签:

【中文标题】BigQuery 中的 Hive 分区 LAYOUT 表格式【英文标题】:Hive partitioning LAYOUT table format in BigQuery 【发布时间】:2020-04-07 23:40:26 【问题描述】:

我在这种情况下有很多 qsn。所以这里是:

是否有人曾将 Kafka 的输出写入 Google Cloud Storage (GCS) 存储桶,以便该存储桶中的数据使用“默认配置单元分区布局”进行分区 这样做的目的是这个外部表需要在 BigQuery 中是“可查询的” 谷歌的文档在这里,但想看看是否有人有一个例子(https://cloud.google.com/bigquery/docs/hive-partitioned-queries-gcs)

例如文档说“文件遵循默认布局,键/值对布局为目录,以 = 符号作为分隔符,分区键始终按相同顺序排列。”

不清楚的是 a) Kafka 是动态创建这些目录还是我必须预先创建它们?假设我想让 KAFKA 根据 GCS 中的日期写入目录

    gs://bucket/table/dt=2020-04-07/

今晚,午夜过后,我是否已经预先创建了这个新目录 gs://bucket/table/dt=2020-04-08/ 或者 Kafka 可以为我创建它,并且在所有这些中,hive 分区布局如何帮帮我?

我每天尝试放入这些目录的表数据是否需要将“dt”(来自 gs://bucket/table/dt=2020-04-07/)作为列?

因为所有这一切的目标是让 BigQuery 查询这个外部表,底层是引用这个存储桶中的所有数据,即

    gs://bucket/table/dt=2020-04-06/
    gs://bucket/table/dt=2020-04-07/
    gs://bucket/table/dt=2020-04-08/

只是想看看这是否是正确的方法。

【问题讨论】:

我添加了标签,因为这更像是 Kafka+Hive 问题而不是 BigQuery 问题 很遗憾这个问题被关闭了,因为我可以提供答案(Kafka Connect)。 @felipehoffa ,这仍然是一个 BigQuery qsn。蜂巢分区只是一种分区布局。它与蜂巢无关。 我添加了我的投票以重新开放。我们还需要一张@RobinMoffatt 的一票(同时我会尝试从朋友那里得到它) 我也觉得这个问题可以解决。我投了赞成票。 【参考方案1】:

Kafka 本身是一个消息传递系统,它允许在进程、应用程序和服务器之间交换数据,但它需要生产者和消费者(here 就是一个例子)来移动数据。例如:

    生产者需要在 BigQuery 可以读取的 format 中发送数据。

    并且消费者需要使用有效的 Hive 布局写入数据。

消费者应该写信给 GCS,因此您需要为您的应用程序找到合适的连接器(例如,Java connector 或 Confluent connector)。在将消息写入 GCS 时,您需要注意使用有效的“默认配置单元分区布局”。

例如,gs://bucket/table/dt=2020-04-07/dt 是表分区所在的列,2020-04-07 是其值之一,因此请注意这一点。在 GCS 中拥有有效的 Hive 布局后,您需要在 BigQuery 中创建一个表,我建议从 UI 中创建一个本机表并选择 Google Cloud Storage 作为源并启用“Source Data Partitioned”,但您也可以使用 - hive_partitioning_source_uri_prefix 和 --hive_partitioning_mode 将 GCS 数据与 BigQuery 表链接起来。

由于所有这些过程都意味着不同的开发和配置层,如果这个过程对您有意义,我建议您针对可能遇到的任何特定错误提出新问题。

最后但并非最不重要的一点是,如果 Hive 布局对于您的用例不是必需的,那么将 Kafka to BigQuery connector 和 other connectors 从 Kafka 摄取到 GCP 可以提供更好的帮助。

【讨论】:

以上是关于BigQuery 中的 Hive 分区 LAYOUT 表格式的主要内容,如果未能解决你的问题,请参考以下文章

在 Bigquery 中的分区表上插入查询

我们可以像在 Hive 中一样在 Big Query 中创建动态分区吗?

创建按一/多列分区的 BigQuery 外部表

是否可以覆盖 BigQuery 中的分区?

列中的 BigQuery 日期分区

BigQuery 中的分区表