【问题标题】:Migrating data from Hive PARQUET table to BigQuery, Hive String data type is getting converted in BQ - BYTES datatype将数据从 Hive PARQUET 表迁移到 BigQuery,Hive 字符串数据类型正在 BQ 中转换 - BYTES 数据类型
【发布时间】:2018-11-06 08:34:05
【问题描述】:

我正在尝试将数据从 Hive 迁移到 BigQuery。 Hive 表中的数据以 PARQUET 文件格式存储。一列的数据类型是 STRING,我正在将 Hive 表后面的文件上传到 Google 云存储上,并从该文件中使用 GUI 创建 BigQuery 内部表。导入表中列的数据类型正在转换为 BYTES。

但是当我导入 VARCHAR 数据类型的 CHAR 时,结果数据类型仅为 STRING。

谁能帮我解释一下为什么会这样。

【问题讨论】:

标签: hive google-bigquery parquet


【解决方案1】:

这并没有回答最初的问题,因为我不知道到底发生了什么,但有过类似奇怪行为的经历。

我在尝试在 Cloudera 和 BigQuery 之间移动表时遇到了类似的问题。

首先在 Impala 上将表创建为外部表,例如:

CREATE EXTERNAL TABLE test1
  STORED AS PARQUET
  LOCATION 's3a://table_migration/test1'
  AS select * from original_table

original_table 包含 STRING 数据类型的列

然后将其传输到 GS 并从控制台 GUI 将其导入 BigQuery 中,选项不多,只需选择 Parquet 格式并指向 GS。

令我惊讶的是,我可以看到列现在是 BYTES 类型,列名保留得很好,但内容被打乱了。

尝试不同的编解码器、预先创建表格并在 Impala 中插入仍然不会导致任何变化。

最后我尝试在 Hive 中做同样的事情,这很有帮助。

所以我最终在 Hive 中创建了外部表,例如:

CREATE EXTERNAL TABLE test2 (col1 STRING, col2 STRING)
  STORED AS PARQUET
  LOCATION 's3a://table_migration/test2';

insert into table test2 select * from original_table;

然后从 S3 复制到 GS 并在 BQ 中导入重复相同的舞蹈 - 这次没有任何问题。列现在在 BQ 中被识别为 STRING,数据也应如此。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多