我正在将Java应用程序从Hadoop / Hive移植到Google Cloud / BigQuery。该应用程序将avro文件写入hdfs,然后创建在文件顶部具有一个/多个分区的Hive外部表。 我了解Big Query目前仅支持日期/时间戳分区,而没有嵌套分区。
我们现在处理蜂巢的方法是生成ddl,然后通过rest调用执行它。
我在BigQuery DDL文档中找不到对CREATE EXTERNAL TABLE的支持,因此我改用了Java库。 我设法创建了一个外部表,但是在传递给调用的参数中找不到对分区的任何引用。 这是我使用的代码片段:
....
ExternalTableDefinition extTableDef =
ExternalTableDefinition.newBuilder(schemaName, null, FormatOptions.avro()).build();
TableId tableID = TableId.of(dbName, tableName);
TableInfo tableInfo = TableInfo.newBuilder(tableID, extTableDef).build();
Table table = bigQuery.create(tableInfo);
....
但是支持非外部表的分区。
我有几个问题要问:
非常感谢您
答案 0 :(得分:1)
_FILE_NAME
pseudo-column来过滤掉不想读取的文件,但是不能在GCS上的文件上创建分区表。CREATE OR REPLACE TABLE ...
)。如果仅添加列,则可以使用API或UI添加新列。