如何让所有的XML文件的一个数据帧在HDFS目录,其中,具有使用databricks XML解析器相同的XML模式如何使用火花HDFS目录中加载所有的XML文件databricks XML解析器
回答
我看到你希望通过分别读取每个XML并单独处理它们来读取XML数据。下面是它的外观框架。
进口scala.xml.XML
VAL RDD1集= sc.wholeTextFiles( “/数据/ TMP /测试/ *”)
VAL XML = rdd1.map(X => XML.loadString(_._ 2.toString())
设置你的databricks依赖Maven作为
https://mvnrepository.com/artifact/com.databricks/spark-xml_2.10/0.2.0
然后使用下面的代码在你的星火计划读取HDFS的XML文件,并创建一个单一的数据帧
进口org.apache.spark.sql.SQLContext
VAL sqlContext =新SQLContext(SC)
VAL DF = sqlContext.read .format( “com.databricks.spark.xml”)
.option("rowTag", "address") //The row tag of your xml files to treat as a row
.load("file.xml")
VAL selectedResult = df.select( “城市”, “邮政编码”)
selectedResult.write
.format("com.databricks.spark.xml")
.option("rootTag", "address") //The root tag of your xml files to treat as the root
.option("rowTag", "address")
.save("result.xml")
查找github上完整的例子:
https://github.com/databricks/spark-xml/blob/master/README.md
你可以用做通配符。请参阅Spark dataframeReader“load”方法。 加载可以为没有路径(即不是HDFS或S3或其他文件系统)的datasrouces采用单个路径字符串,一系列路径或无参数。 http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.DataFrameReader
val df = sqlContext.read.format("com.databricks.spark.xml")
.option("inferschema","true")
.option("rowTag", "address") //the root node of your xml to be treated as row
.load("/path/to/files/*.xml")
负荷可能需要较长的字符串类似这样的答案逗号分隔的路径
.load("/path/to/files/File1.xml, /path/to/files/File2.xml")
或者 Reading multiple files from S3 in Spark by date period
您还可以使用的路径序列
val paths: Seq[String] = ...
val df = sqlContext.read.load(paths: _*)
请注意,对于XML来说,这种推测是相当忙碌的。当涉及很多文件时,我还没有取得很大的成功。指定模式效果更好。如果您可以保证您的XML文件都具有相同的模式,您可以使用它们的一小部分来推断模式,然后加载其余的模式。我认为这并不安全,因为即使XML仍然可以“有效”如果它缺少一些与XSD相关的节点或元素。
- 1. 用R解析XML文件的目录
- 2. 使用SAX解析器,如何解析java中的xml文件
- 3. 如何通过FTP下载目录中的所有XML文件?
- 4. 从火花的hdfs解压缩文件
- 5. 使用Python解析目录中所有文件的XML标记值
- 6. 如何在python中使用minidom解析器解析xml文件
- 7. 如何使用chdir遍历子目录并解析XML文件?
- 8. 使用XMLPullParser解析所有XML文本
- 9. 如何使用JxPath和DOM解析器解析XML文件
- 10. 从项目目录加载XML文件
- 11. 使用SAX解析器解析具有多个XML标记的XML文件
- 12. 如何使用VTD-XML库解析Scala中的XML文件?
- 13. 星火XML解析
- 14. 如何使用linq解析xml文件?
- 15. 如何使用NSXMLParser解析XML文件
- 16. 如何使用Nokogiri解析XML文件?
- 17. 如何使用Python解析XML文件?
- 18. 如何使用haddop的hdfs与火花
- 19. 使用xml :: twig解析xml文件
- 20. 使用vtd-xml解析xml文件
- 21. 火花使用log4j登录到HDFS
- 22. 如何使用SAX XML解析器解析XML
- 23. 如何解析XML文件
- 24. 如何解析XML文件?
- 25. 如何解析XML文件
- 26. 如何解析XML文件
- 27. 如何解析XML文件
- 28. 使用SAX解析器解析java中的XML文件
- 29. 如何解析位于HDFS中的XML文件并追加子节点
- 30. 如何在C#中使用DTD解析XML解析文件
这是一个结构不好的问题。你应该提供一个你已经尝试过并且不适合你的例子。你会得到更好的答案。 – Davos