为啥 Parquet 文件中的数据在 BigQuery 表中加载后与源数据不匹配

Posted

技术标签:

【中文标题】为啥 Parquet 文件中的数据在 BigQuery 表中加载后与源数据不匹配【英文标题】:Why data in parquet file doesn't match from source data after loading in BigQuery table为什么 Parquet 文件中的数据在 BigQuery 表中加载后与源数据不匹配 【发布时间】:2019-05-17 06:53:17 【问题描述】:

在我将 parquet 文件从 Google 存储加载到 BigQuery 表之后。预览中的数据(在 Bigquery 中)最初与源数据不同。但是架构是正确的。

【问题讨论】:

Nurma 你能分享一下预期的结果,还可以从表格中做一个select,而不只是使用预览选项卡来检查值 嗨 Tamir,我从表中进行了选择,然后结果显示相同的值(SELECT * FROM master-tangent-240211.Demo_2019.Demo_parquet LIMIT 1000)。请帮我。谢谢 请检查 bigquery 文档并确认您的数据未压缩,或者您完全遵循所有描述的准则 cloud.google.com/bigquery/docs/…。如果情况仍然如此,请提供一个明文示例以及如何将其转换为 Parquet,以便更轻松地为您提供进一步的帮助。还请添加预期值与回收项目,以便清楚地看到您面临的差距是什么 嗨 Tamir,我将 parquet 文件加载到 BigQuery 中,命令如下: bq --location=asia-southest1 load --source_format=PARQUET Demo_2019.Demo_01 gs://cdh-bucket/warehouse/parquet_employee/ea4b68c5d20bbc90 -bfec9bfd00000000_333529865_data.0.parq。加载成功后,我发现原来的数据不正确。结果显示行 (1) id (MDAx) 名称 (bWVI)。所以我通过这个命令 bq --location=asia-southest1 load --source_format=PARQUET Demo_2019.Demo_01 gs://cdh-bucket/warehouse/sample_parquet/userdata1.parquet 加载了另一个 parquet 文件。结果数据正确。 嗨,Nurma 没有原始文件,我无能为力。我建议您直接联系 BigQuery 支持以帮助您解决此问题 【参考方案1】:

我认为如果架构正确,则加载的数据必须正确。我最好的猜测是镶木地板文件中的数据被屏蔽了,您需要一个函数来取消屏蔽它。

要验证 parquet 是否包含加载到 BQ 的相同数据,您可以通过运行 parquet 工具在原始 parquet 文件中列出几行:

$ hadoop jar parquet-tools-1.9.0.jar head file:///ea4b68c5d20bbc90-bfec9bfd00000000_333529865_data.0.parq

【讨论】:

以上是关于为啥 Parquet 文件中的数据在 BigQuery 表中加载后与源数据不匹配的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Spark 不能自动检测 Parquet 文件中的新字段?

为啥创建了这么多 Parquet 文件?我们可以不限制 Parquet 输出文件吗?

为啥索引名称总是出现在用 pandas 创建的 parquet 文件中?

为啥 Apache Spark 会读取嵌套结构中不必要的 Parquet 列?

为啥聚合的 Spark Parquet 文件比原始文件大?

为啥聚合的 Spark Parquet 文件比原始文件大?