我确实遇到了一个使用spark进行数据预处理的迷你教程: http://ampcamp.berkeley.edu/big-data-mini-course/featurization.html
但是,这仅讨论了文本文件解析。有没有办法解析spark系统中的xml文件?
答案 0 :(得分:4)
看起来有人为apache-spark创建了一个xml数据源。
https://github.com/databricks/spark-xml
这支持通过指定标记和推断类型来读取XML文件,例如
SHOW TRIGGERS
您也可以将其与CREATE TABLE `fallimenti` (
`annoInserimento` int(4) NOT NULL DEFAULT '2015',
`pk` int(11) NOT NULL AUTO_INCREMENT,
`id` int(11) DEFAULT NULL,
`nome` varchar(250) NOT NULL,
`nomeNormalizzato` varchar(250) NOT NULL,
`indirizzo` varchar(250) DEFAULT NULL,
`citta` varchar(250) DEFAULT NULL,
`prov` char(2) DEFAULT NULL,
`udienza` datetime DEFAULT NULL,
`procedimento` varchar(10) DEFAULT NULL,
`anno` int(11) DEFAULT NULL,
`dichiarazione` date DEFAULT NULL,
`tribunale` varchar(250) DEFAULT NULL,
`curatore` varchar(250) DEFAULT NULL,
`indirizzoCuratore` varchar(250) DEFAULT NULL,
`telCuratore` varchar(16) DEFAULT NULL,
`giudice` varchar(250) DEFAULT NULL,
`piva` varchar(11) DEFAULT NULL,
`dataInserimento` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`attivita` varchar(250) DEFAULT NULL,
`tipo` varchar(10) CHARACTER SET ascii DEFAULT NULL,
`pec` varchar(255) NOT NULL,
`testo` text NOT NULL,
PRIMARY KEY (`pk`),
UNIQUE KEY `id` (`id`,`udienza`),
UNIQUE KEY `nomeNormalizzato` (`nomeNormalizzato`,`citta`,`annoInserimento`)
) ENGINE=InnoDB AUTO_INCREMENT=149418 DEFAULT CHARSET=utf8
一起使用,如下所示:
import org.apache.spark.sql.SQLContext
val sqlContext = new SQLContext(sc)
val df = sqlContext.read
.format("com.databricks.spark.xml")
.option("rowTag", "book")
.load("books.xml")
答案 1 :(得分:3)
我自己没有使用它,但方法与你为hadoop做的一样。例如,您可以使用StreamXmlRecordReader并处理xmls。您需要记录阅读器的原因是您希望控制处理的每个元素的记录边界,否则使用的默认值将处理行,因为它使用LineRecordReader。让自己更熟悉hadoop中recordReader的概念会很有帮助。
当然,您必须使用SparkContext的hadoopRDD或hadoopFile方法以及传递InputFormatClass的选项。 Incase java是您的首选语言,存在类似的替代方案。
答案 2 :(得分:1)
另一个选择是Flexter Data Liberator。它是一个完全自动化processing of XML on Spark并将输出生成为Parquet,RDBMS,TSV等表格的工具,它们是数据分析和下游处理的理想数据格式,例如:在数据仓库或商业智能环境中。
答案 3 :(得分:0)
答案 4 :(得分:0)
如果您正在寻找在xml中提取单个子记录,那么您可以使用XmlInputFormat来实现这一点,我已经写了一篇博客 http://baahu.in/spark-read-xml-files-using-xmlinputformat/