【发布时间】:2021-12-08 10:39:07
【问题描述】:
从DailyMed - Download all Drug Labels 中提取人工处方标签文件。这些文件的 .xml 格式是 HL7 V3 格式,尽管在我的集群上安装了正确的库,但事实证明很难解析 See Install Instructions for MAVEN XML Parsing in AWS Clusters in Databricks。有人将这些文件类型从 .xml 格式正确解析为 spark 数据帧的任何提示或示例?
我目前的方法包括检索所有文件并将它们存储在 dbfs 中。
%scala
import java.net.URL
import java.io.File
import org.apache.commons.io.FileUtils
FileUtils.copyURLToFile(new URL("https://dailymed-data.nlm.nih.gov/public-release-files/dm_spl_release_human_rx_part1.zip"), new File("/dbfs/FileStore/your_path_here/dm_spl_release_human_rx_part1.zip"))
解压下载的文件
%sh
unzip -vu '/dbfs/FileStore/your_path_here/dm_spl_release_human_rx_part1.zip' -d /dbfs/FileStore/your_path_here/
在解压后的文件中解压 zip 文件(初始)
%sh
for file in /dbfs/FileStore/your_path_here/prescription/*.zip
do
unzip -j $file '*.xml' -d /dbfs/FileStore/your_path_here/xml/
done
然后由于 .xml HL7 V3 格式的独特格式,从这里开始解析变得困难。玩弄转换为 .json 但遇到了特殊字符问题。现在求助于删除特殊字符并继续将 .xml 解析为 spark 数据帧。任何关于某人如何在 Spark Scala 中执行此操作的提示都会很棒!
这是对尝试读取和结果消息的更新。
import com.databricks.spark.xml.schema_of_xml
import spark.implicits._
val df = spark.read.format("xml").load("/FileStore/your_path_here/xml/ABD6ECF0-DC8E-41DE-89F2-1E36ED9D6535.xml")
// val payloadSchema = schema_of_xml(df.select("payload").as[String])
// val parsed = df.withColumn("parsed", from_xml($"payload", payloadSchema))
df.show()
【问题讨论】:
-
嗨粘土!欢迎 :) 你能包括任何你尝试过的
spark.read命令吗?包括任何(错误)输出?请通过编辑您的问题来做到这一点。 -
嗨@tjheslin1 - 确实没有明显的错误。数据框看起来是空的。我在上面的帖子中包含了一个屏幕截图。在尝试将 .xml 解析为 .json 文件后,我们实现了 90% 的目标进展,直到我们遇到了一个所需的嵌套结构化字段成为字符串数组,因为我们猜测这是一个重复的键,因为那是在该方向更改文件格式时的典型问题。
标签: java xml scala maven apache-spark