bigquery中的hive分区布局表格式

w1e3prcc  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(510)

在这种情况下我有很多QSN。接下来是:
有没有人把Kafka的输出写到谷歌云存储(gcs)的存储桶里,这样,bucket中的数据就可以使用“default hive partitioning layout”进行分区,这样做的目的是在bigquery google的文档中,这个外部表需要是“可查询”的,但是想看看是否有人有一个例子(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分区布局如何帮助我?
我每天都要将表中的数据放入这些dir中,是否需要将“dt”(来自gs://bucket/table/dt=2020-04-07/)作为一列?
因为所有这些的目标都是让bigquery查询这个外部表,它的底层是引用这个bucket中的所有数据。

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

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

1tu0hz3e

1tu0hz3e1#

kafka本身是一个消息传递系统,允许在进程、应用程序和服务器之间交换数据,但是它需要生产者和消费者(这里是一个示例)来移动数据。例如:
生产者需要以bigquery可以读取的格式发送数据。
使用者需要使用有效的配置单元布局写入数据。
使用者应该写入gcs,因此您需要为您的应用程序找到合适的连接器(例如,这个java连接器或合流连接器)。在将消息写入gcs时,需要注意使用有效的“默认hive分区布局”。
例如, gs://bucket/table/dt=2020-04-07/ , dt 是对表进行分区的列,并且 2020-04-07 是它的价值之一,所以要小心。一旦你在gcs中有了一个有效的配置单元布局,你就需要在bigquery中创建一个表,我建议从ui中选择一个本地表,并选择google云存储作为源并启用“源数据分区”,但是你也可以使用--hive\u partitioning\u source\u uri\u prefix和--hive\u partitioning\u模式将gcs数据与bigquery表链接起来。
由于所有这些过程都意味着开发和配置的不同层次,如果这个过程对您有意义,我建议您针对可能出现的任何特定错误提出新的问题。
最后但并非最不重要的一点是,如果您的用例不强制使用配置单元布局,那么kafka-to-bigquery连接器和从kafka-to-gcp摄取的其他连接器可以提供更好的帮助。

相关问题