Я пытался создать внешнюю таблицу для секционированных данных в GCS, записанных из задания спарка, с датой, секционированной в формате PARQUET.
Данные представляют собой корзину GCS, как показано на рисунке.
Я создал внешнюю таблицу с определением таблицы
"hivePartitioningOptions": {
"mode": "AUTO",
"sourceUriPrefix": "gs://transaction_data_bucket_for_bigquery/trx_data"
},
"sourceFormat": "PARQUET",
"sourceUris": [
"gs://transaction_data_bucket_for_bigquery/trx_data/*"
]
}
с помощью команды
bq mk --external_table_definition=/tmp/table_def <project>:<dataset>.sample_trx_external
Когда я пытаюсь запросить таблицу, я получаю странную ошибку.
Partition keys should be invariant from table creation across all partitions, with the number of partition keys held constant with invariant names. Expected 0 partition keys ([]), but 1 ([transaction_date]) were encountered along path /bigstore/transaction_data_bucket_for_bigquery/trx_data/transaction_date=2016-01-01.; Cannot add hive partitioning to table <data_set>.sample_trx_external -- table creation from underlying uri failed.. Underlying error: Partition keys should be invariant from table creation across all partitions, with the number of partition keys held constant with invariant names. Expected 0 partition keys ([]), but 1 ([transaction_date]) were encountered along path /bigstore/transaction_data_bucket_for_bigquery/trx_data/transaction_date=2016-01-01..
К сожалению, я не смог расшифровать сообщение. В корзину GCS записывается только 1 день транзакций.
Когда я попробовал с определением режима CUSTOM
{
"hivePartitioningOptions": {
"mode": "CUSTOM",
"sourceUriPrefix": "gs://transaction_data_bucket_for_bigquery/trx_data/{transaction_date:DATE}"
},
"sourceFormat": "PARQUET",
"sourceUris": [
"gs://transaction_data_bucket_for_bigquery/trx_data/*"
]
}
я получил немного другую ошибку
Partition keys should be invariant from table creation across all partitions, with the number of partition keys held constant with invariant names. Expected 1 partition keys ([transaction_date]), but 0 ([) were encountered along path /bigstore/transaction_data_bucket_for_bigquery/trx_data.; Cannot add hive partitioning to table <data_Set>.sample_trx_external_2 -- table creation from underlying uri failed.. Underlying error: Partition keys should be invariant from table creation across all partitions, with the number of partition keys held constant with invariant names. Expected 1 partition keys ([transaction_date]), but 0 ([) were encountered along path /bigstore/transaction_data_bucket_for_bigquery/trx_data..
Попал сюда, и любое предложение было бы большим подспорьем.