在gcs上创建带有镶木地板文件的新大查询外部表时。显示错误

时间:2018-05-05 11:16:21

标签: google-bigquery google-cloud-storage parquet

我试图在gcs上创建一个带有镶木地板文件的大型查询外部表。它显示错误的格式错误。

但使用相同的文件来创建本机表工作正常。为什么它必须是原生表。

如果使用本机表,如何将更多数据导入此表?我不想删除并创建每次获得新数据时的表格。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

Parquet目前不是supported data format for federated tables。只要您追加(而不是覆盖)当前内容,就可以重复将更多数据加载到同一个表中。

答案 1 :(得分:1)

at least in beta现在似乎受支持。据我所知,这仅在us-central1中有效。

Simply select 'External Table' and set 'Parquet' as your file type

答案 2 :(得分:1)

当前的Google文档可能有点难以理解。这是一个两步过程,首先创建定义文件,然后将其用作创建表的输入。

如果要处理未分区的文件夹,请创建定义文件

Game_id VARCHAR(50)

否则,如果要处理配置单元分区表

 bq mkdef \
  --source_format=PARQUET \
  "<path/to/parquet/folder>/*.parquet" > "<definition/file/path>"

注意:路径/到/配置单元/表/文件夹不应包含分区 文件夹

例如:如果您的表以格式加载 gs://project-name/tablename/year=2009/part-000.parquet

bq mkdef \
  --autodetect \
  --source_format=PARQUET \
  --hive_partitioning_mode=AUTO \
  --hive_partitioning_source_uri_prefix="<path/to/hive/table/folder>" \
  "<path/to/hive/table/folder>/*.parquet" > "<definition/file/path>"

最后,可以通过定义文件创建表,

bq mkdef \
      --autodetect \
      --source_format=PARQUET \
      --hive_partitioning_mode=AUTO \
      --hive_partitioning_source_uri_prefix="gs://project-name/tablename" \
      "gs://project-name/tablename/*.parquet" > "def_file_name"