0

我正在使用 bq 版本 2.0.58 并尝试创建配置单元分区 BigQuery 外部表。但是使用 bq 命令创建 hive 分区外部表时缺少 hive 分区键列,以下命令创建表。

贮存:

gs://<bucket>/myfolder/size=1000/file_1k.csv
gs://<bucket>/myfolder/size=10000/file_10k.csv

mkdef命令

bq mkdef --project_id=my-project --autodetect --source_format=CSV --hive_partitioning_mode=AUTO --hive_partitioning_source_uri_prefix=gs://<bucket>/myfolder gs://<bucket>/myfolder/* >my_table_def.json

mk命令,bq mk --external_table_definition=my_table_def.json my-project:my-dataset.mytable

上面的命令创建了一个带有 hive 分区键列的表。但是当我向其中添加架构时。创建表时缺少添加分区键 ( size ) 列。

创建表时缺少以下 bq 命令来创建分区键列。

bq mk --schema=ip:STRING,fraudype:STRING,probability:FLOAT --external_table_definition=my_table_def.json my-project:my-dataset.mytable

my_table_def.json,

{
   "csvOptions": {
     "encoding": "UTF-8",
     "quote": "\""
   },
   "hivePartitioningOptions": {
     "mode": "AUTO",
     "sourceUriPrefix": "gs://<bucket>/myfolder"
   },
   "sourceFormat": "CSV",
   "sourceUris": [
     "gs://<bucket>/myfolder/*"
   ]
 }
4

1 回答 1

2

--schema 命令不应与 bq mk 一起用于 hive 分区外部表定义,mkdef 会有所帮助。

解决方案:

bq mkdef --source_format=CSV \
--hive_partitioning_mode=CUSTOM \
--hive_partitioning_source_uri_prefix=gs://<bucket>/myfolder/{size:INTEGER} \
gs://<bucket>/myfolder/* \
ip:STRING,fraudype:STRING,probability:FLOAT >my_table_def.json

bq mk --external_table_definition=my_table_def.json my-project:my-dataset.mytable
于 2020-08-11T07:52:12.500 回答