将hive表迁移到Google BigQuery

时间:2017-10-26 16:03:00

标签: hadoop hive google-bigquery google-cloud-platform

我正在尝试设计一种数据管道来将我的Hive表迁移到BigQuery中。 Hive在Hadoop on premise集群上运行。这是我目前的设计,实际上,这很简单,它只是一个shell脚本:

为每个表source_hive_table {

  • INSERT覆盖表target_avro_hive_table SELECT * FROM source_hive_table;
  • 使用distcp
  • 将生成的avro文件移动到Google云端存储中
  • 创建第一个BQ表:bq load --source_format=AVRO your_dataset.something something.avro
  • 处理BigQuery本身的任何强制转换问题,因此从刚刚编写的表中选择并手动处理任何强制转换

}

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

1 个答案:

答案 0 :(得分:3)

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

我个人更喜欢直接将特定类型的CAST用于生成Avro(Hive)数据的初始“Hive查询”。例如,Hive中的“ decimal ”类型映射到Avro'类型':“type”:“bytes”,“logicalType”:“decimal”,“precision”:10,“尺度“:2

BQ将采用主要类型(此处为“bytes”)而不是logicalType。 这就是为什么我发现直接在Hive中投射更容易(这里为“double”)。 date-hive类型也会出现同样的问题。