我正在使用kafka主题的XML文件。任何人都可以告诉我如何将XML解析为数据帧。
val df = sqlContext.read
.format("com.databricks.spark.xml")
//.option("rowTag","ns:header")
// .options(Map("rowTag"->"ntfyTrns:payloadHeader","rowTag"->"ns:header"))
.option("rowTag","ntfyTrnsDt:notifyTransactionDetailsReq")
.load("/home/ubuntu/SourceXML.xml")
df.show
df.printSchema()
df.select(col("ns:header.ns:captureSystem")).show()
我能够从XML中确定信息信息。我不知道如何传递或转换或将RDD [String]从kafka主题加载到sql read API。
谢谢!
答案 0 :(得分:1)
我面临同样的情况,做了一些研究我发现有些人使用这种方法将RDD转换为DataFrame,使用如下here所示的代码:
val wrapped = rdd.map(xml => s"""<a>$xml</a>""")
val df = new XmlReader().xmlRdd(sqlContext, wrapped)
你只需要从DStream获取RDD,我这样做是使用pyspark
streamElement = ssc.textFileStream("s3n://your_path")
streamElement.foreachRDD(process)
其中process方法具有以下结构,因此您可以使用rdds
执行所有操作def process(time, rdd):
return value