簡體   English   中英

掃描 parquet 聯合表時出現 INT32 類型錯誤。 錯誤或預期行為?

[英]INT32 type error when scanning parquet federated table. Bug or Expected behavior?

我正在使用 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庫進行了一些調查,以窺探我的 parquet 數據的內部結構。

當我運行java -jar./parquet-tools-1.10.0.jar meta test.c000.gz.parquet | grep visitor_partition 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 類型呢?

請注意,外部表的模式是從與表的源 URI 匹配的所有文件列表中按文件名按字典順序排序的最后一個文件推斷出來的。 因此,在您的案例中,特定 Parquet 文件的架構可能與您描述的架構不同,例如,“visitor_partition”字段具有 DATE 邏輯類型的 INT32 列 - BigQuery 將推斷為 DATE 類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM