You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Data Factory Parquet接收器十进制数据偏移问题求助

解决方案:ADF Parquet接收器Decimal数据偏移问题

针对你遇到的ADF通过Parquet接收器写入ADLS Gen2时,Decimal(35,15)类型数据因小数前导0丢失导致偏移的问题,可尝试以下几种解决方法:

1. 强制指定Parquet接收器的Decimal类型映射

在ADF管道的Parquet接收器配置中,不要依赖自动类型映射,手动指定目标字段的精度和小数位:

  • 进入接收器的映射标签,点击「导入架构」
  • 找到问题Decimal字段,将其类型手动设置为Decimal(35,15),确保精度和小数位与数据源完全匹配
  • 保存配置后重新运行管道,让Parquet writer严格按照指定类型写入数据

2. Databricks读取时显式定义Schema

如果ADF端调整后仍存在读取偏移,在Databricks读取Parquet文件时,强制指定字段的Decimal类型,避免Spark自动推断出错:

from pyspark.sql.types import StructType, StructField, DecimalType

# 自定义Schema,替换为你的实际字段结构
custom_schema = StructType([
    StructField("target_decimal_col", DecimalType(35, 15), nullable=True),
    # 其他字段请按需添加
])

# 用自定义Schema读取Parquet文件
df = spark.read.schema(custom_schema).parquet("abfss://<container_name>@<storage_account>.dfs.core.windows.net/<file_path>")

3. 临时绕过方案:字符串中转

若上述方法无效,可在ADF管道中添加数据转换活动,先将Decimal字段转为字符串(保留完整格式),再转回Decimal(35,15)后写入Parquet。这种方式能确保小数前导0不被丢失,但会增加处理开销,适合小数据量场景。

4. 检查版本兼容性

  • 确认ADF使用的Parquet writer版本与Databricks的Parquet reader版本兼容,部分旧版本对高精度Decimal的处理存在bug
  • 尝试升级Databricks Runtime到11.3 LTS及以上的稳定版本,新版本对Decimal类型的解析支持更完善

内容的提问来源于stack exchange,提问作者Brandon Chan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 06:53:17