为啥 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 文件中?