You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by "Jinpeng Zhou (Jira)" <ji...@apache.org> on 2023/06/07 18:10:00 UTC
[jira] [Created] (HUDI-6333) allow using the manifest file with absolute path to directly create one bigquery external table over the Hudi table
Jinpeng Zhou created HUDI-6333:
----------------------------------
Summary: allow using the manifest file with absolute path to directly create one bigquery external table over the Hudi table
Key: HUDI-6333
URL: https://issues.apache.org/jira/browse/HUDI-6333
Project: Apache Hudi
Issue Type: Improvement
Components: meta-sync
Reporter: Jinpeng Zhou
To query Hudi table from bigquery, the current BigQuerySyncTool creates two bigquery external tables, one over the data files and the other over a manifest file that contains the data file name. Based on these two tables, it creates a view to reflect the latest version of data using the following query: "SELECT * FROM data_table WHERE _hoodie_file_name IN ( SELECT filename FROM manifest_file_table)".
The direct reason for such a workaround is that bigquery cannot support manifest file. However, bigquery is rolling out its manifest file support , allowing users to specify manifest file as source uris. Right now the feature[1] roll-out seems to cover non-partitioned external tables (using hive parition would return an error "file_set_spec_type option is not supported for hive partition"), which should be covering partitioned external tables soon.
Given this new bigquery feature, it would be better to update BigQuerySyncTool correspondingly:
* Allow creating a bigquery compatible manifest file which expects absolute path of data files. This has been done in HUDI-6254.
* Allow using the new manifest file to create external table directly. This can be done by issuing one "CREATE EXTERNAL TABLE" query to bigquery.
* Avoid breaking existing user workflows. In case there are some users relying on the view-based workaround, it probably make sense to keep the workaround alive at least for now. That would require maintaining two versions of manifest files.
* Provide a temporary workaround for using bigquery manifest file support till this feature extends to partitioned table. Since it currently does not support hive partition, the "CREATE EXTERNAL TABLE" can only create a table over all the parquet data files without recognizing the partition columns. To keep the partition columns, a possible workaround is to set the "hoodie.datasource.write.drop.partition.columns" as false and allow users to not specify the "hoodie.gcp.bigquery.sync.source_uri_prefix", such that the partition columns can be written into the parquet files and the BigQuerySyncTool will not try to create a hive-partitioned external table.
[1]https://cloud.google.com/bigquery/docs/information-schema-table-options#options_table
--
This message was sent by Atlassian Jira
(v8.20.10#820010)