Hadoop 将配置单元表迁移到Google BigQuery

Hadoop 将配置单元表迁移到Google BigQuery,hadoop,hive,google-bigquery,google-cloud-platform,Hadoop,Hive,Google Bigquery,Google Cloud Platform,我正试图设计一种数据管道,将我的配置单元表迁移到BigQuery中。Hive正在Hadoop本地集群上运行。这是我目前的设计,其实很简单,只是一个shell脚本: 对于每个表源\配置单元\表{ 插入覆盖表target\u avro\u hive\u tableSELECT*FROM source\u hive\u table; 使用distcp 创建第一个BQ表:BQ加载--source\u format=AVRO您的数据集。something something.AVRO 从BigQuery

我正试图设计一种数据管道,将我的配置单元表迁移到BigQuery中。Hive正在Hadoop本地集群上运行。这是我目前的设计,其实很简单,只是一个shell脚本:

对于每个表源\配置单元\表{

  • 插入覆盖表
    target\u avro\u hive\u table
    SELECT*FROM source\u hive\u table;
  • 使用
    distcp
  • 创建第一个BQ表:
    BQ加载--source\u format=AVRO您的数据集。something something.AVRO
  • 从BigQuery本身处理任何转换问题,因此从刚刚编写的表中选择并手动处理任何转换
}

你认为这有意义吗?有没有更好的方法,也许是使用Spark?
我对我处理转换的方式不满意,我希望避免两次创建BigQuery表。

是的,您的迁移逻辑是有意义的

我个人更喜欢将特定类型的转换直接转换到生成Avro(配置单元)数据的初始“配置单元查询”中。例如,配置单元中的“decimal”类型映射到Avro的“type”:“type”:“bytes”,“logicalType”:“decimal”,“precision”:10,“scale”:2

BQ将只接受主类型(这里是“字节”),而不是logicalType。 这就是为什么我发现直接在蜂巢中施放更容易(这里是“加倍”)。
日期配置单元类型也会出现同样的问题。

从任何其他数据库迁移到BigQuery的最佳/最简单方法是导出(例如CSV)、上载到GCS并导入。完成。您能详细说明“转换到初始配置单元查询”吗?例如,我的问题是Avro时间戳到BQ时间戳之间的映射。您可以在这里看到2个cast:
CREATE TABLE sluangsay.xxxx存储为AVRO作为select cast(itemordervalue作为double),hit_time_gmt,cast(datedir作为字符串),post_cookies来自tst_bidwh.xxx_source,其中datedir='2017-03-24'