我正在使用 BigQuery 查询外部数据源(也称为联合表),其中源数据是存储在 google 云存储中的 hive 分区 parquet 表。我使用本指南来定义表格。
我测试此表的第一个查询如下所示
SELECT * FROM my_dataset.my_table WHERE year=2019 AND day = "2019-01-01" LIMIT 10
此查询失败并出现以下错误
列 visitor_partition 的类型为 INT64,与预期的 INT32 类型不同
我想知道为什么会发生此错误以及如何解决或解决它。我使用该parquet-tools
库进行了一些调查,以窥探我的镶木地板数据的内部结构。
当我运行java -jar ./parquet-tools-1.10.0.jar meta test.c000.gz.parquet | grep visitor_partition
我的一个镶木地板文件时,将返回以下相关行
visitor_partition: OPTIONAL INT64 R:0 D:1
visitor_partition: INT64 GZIP DO:0 FPO:59420041 SZ:54561/537912/9.86 VC:633590 ENC:BIT_PACKED,PLAIN_DICTIONARY,RLE ST:[min: 0, max: 99, num_nulls: 0]
当我运行架构命令时,会出现以下相关架构信息optional int64 visitor_partition;
所以很明显,在这个 parquet 文件中,该visitor_partition
字段的数据表示为 INT64。那么为什么 BigQuery 期望在这里看到 INT32 类型呢?