【发布时间】:2022-04-20 21:17:20
【问题描述】:
我正在将 JSON 遥测数据从 Azure 流分析发送到序列化为 .parquet 文件的 Azure Data Lake Gen2。然后,我从数据湖中在我的 Azure Synapse Serverless SQL 池中创建了一个视图,我可以连接到该视图并查询数据以获取报告。
每隔一段时间我会运行一个查询并返回以下错误:
处理外部文件时出错:'parquet 文件中的元数据无效。数字 元数据中的行数与镶木地板中的实际行数不匹配 文件。'。文件/外部表名: 'https://test123.dfs.core.windows.net/devicetelemetry/2021/12/03/20/-1875592941_d9a0239529f04e1eb587b83d50bbb590_1.parquet'。
当我尝试使用“Apache Parquet 查看器”或任何其他 Parquet 查看器打开有问题的 .paqruet 文件时,它会出错并拒绝打开文件,并抱怨名为“数据”的列未定义。数据列是一个 JSON 字符串,其中包含来自 IoT 设备的各种传感器读数。
将数据发送到我的 ADLS 的 StreamAnalytics 查询如下所示:
SELECT
Tel.identities.corporationId AS corporationId, Tel.identities.deviceId,
Tel.deviceTelemetry.version, Tel.deviceTelemetry.TimeStamp AS dateTimeStamp,
Tel.deviceTelemetry.data
INTO
deviceTelemetryADLS
FROM
data AS Tel
WHERE Tel.deviceTelemetry.data IS NOT null
问题
这里使用的 WHERE 子句不能确保数据始终存在吗?不然不会发?否则我的 .parquet 文件怎么会损坏?
【问题讨论】:
-
嗨,乔希,如果这对时间敏感,您能否在 Azure 门户中打开支持票证?如果没有,我将尝试重现该问题。如果可能,您介意共享一个重现该问题的示例输入文件吗?最好发送至 askasa@microsoft.com
-
仅供参考,一旦预览数据,您可以在输入配置文件中轻松地从 VS Code 生成示例文件。
-
我正在经历这个确切的错误。你解决了吗?
-
@FlavioPegas 请参阅下面的答案
标签: apache-spark parquet azure-data-lake azure-stream-analytics azure-synapse