我要做的是——有人要求我使用spark java,但不使用com.databricks实用程序来展平xml。
我复制了xmlinputclass java代码并使用了它。因此,在通过rdd进行处理时,文件拆分可能不会引起问题。
public class XMLParser implements Serializable{
protected JavaPairRDD<LongWritable, Text> getInputRDD(JavaSparkContext sparkContext, String FileName){
sparkContext.hadoopConfiguration().set(XMLInputFormat_New.START_TAG_KEY, "<book>");
sparkContext.hadoopConfiguration().set(XMLInputFormat_New.END_TAG_KEY, "</book>");
sparkContext.hadoopConfiguration().set(FileInputFormat.INPUT_DIR , FileName);
return sparkContext.newAPIHadoopRDD(sparkContext.hadoopConfiguration(), XMLInputFormat_New.class, LongWritable.class, Text.class);
}
public static void main(String[] args) throws Exception {
System.out.println("start of program");
SparkConf sparkConf = new SparkConf().setAppName("File_Validation").setMaster("local");
JavaSparkContext sparkContext = new JavaSparkContext(sparkConf);
XMLParser xmlParser = new XMLParser();
JavaPairRDD<LongWritable, Text> lines = xmlParser.getInputRDD(sparkContext, "hdfs://user/books.xml");
既然我已经在rdd行中得到了数据,我该如何进一步得到记录集。请帮忙
我知道我必须使用sax解析器来扁平化必须在rdd转换函数中编写的代码,然后必须采取措施。但我没有任何进一步的途径。
暂无答案!
目前还没有任何答案,快来回答吧!