将数据从 Hive PARQUET table 迁移到 BigQuery,Hive String 数据类型正在 BQ 中转换 - BYTES 数据类型

Migrating data from Hive PARQUET table to BigQuery, Hive String data type is getting converted in BQ - BYTES datatype

我正在尝试将数据从 Hive 迁移到 BigQuery。 Hive table 中的数据存储在 PARQUET 文件中 format.Data 一列的类型是 STRING,我正在将 Hive table 后面的文件上传到 Google 云存储并从中创建带有 GUI 的 BigQuery 内部 table。导入的列的数据类型 table 正在转换为 BYTES。

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

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

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

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

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

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

original_table 具有 STRING 数据类型的列

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

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

尝试不同的编解码器,预先创建 table 并仍然插入 Impala 导致没有任何变化。

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

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

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,数据也应该是这样。