使用 databrics spark API 推断 xml 处理的模式选项

Posted

技术标签:

【中文标题】使用 databrics spark API 推断 xml 处理的模式选项【英文标题】:Infer schema option for xml processing using databrics spark API 【发布时间】:2017-12-22 09:38:35 【问题描述】:

我必须处理一个具有“0001546”之类的字符串值的xml。如果我使用databrics xml API将它们加载到数据帧中,它会将实际字符串值转换为双精度类型,并且存在双精度问题将我的完整值从“0001546”更改为1546。这是因为字符串隐式类型转换为数字,但我不希望它表现得那样。预期实际值应按原样处理。 一种选择是为 xml 指定手动模式,这在我的情况下是不可行的。 我发现了一个向 databrics 报告的错误,以禁用像 csv 文件这样的推断模式。 我们有任何解决方法/解决方案来解决这个问题吗?感谢您的帮助。

【问题讨论】:

【参考方案1】:

我找到了一个战术解决方案,直到它在新版本中得到修复。 我创建了一个占位符 xml 文件,该文件放置在输入文件夹中,该文件夹包含我要处理的所有 xml 文件。 占位符 xml 文件中的 id 字段的值类似于 <Id>x0001546</Id> 请注意,在虚拟记录中添加了一个额外的“x”字符。 因为,采样推断模式的默认值是 1(不需要对每条记录都这样做),spark 认为这个字段应该被视为字母数字。后来我从数据框中过滤掉了占位符 xml 记录。

【讨论】:

您好,您有没有找到更好的解决方案?

以上是关于使用 databrics spark API 推断 xml 处理的模式选项的主要内容,如果未能解决你的问题,请参考以下文章

在 read.csv 期间使用限制的 Spark 推断架构

如何知道 Spark 使用 Scala 推断出的 RDD 类型是啥

spark 如何从 JSON 推断数字类型?

使用 spark.read.format("com.crealytics.spark.excel") 的 inferSchema 推断日期类型列的双精度

从 Spark 连接到 Redshift 时无法推断架构

Spark 任务推断执行机制