processxml在spark中无需外部工具

m2xkgtsf  于 2021-06-02  发布在  Hadoop
关注(0)|答案(0)|浏览(179)

我要做的是——有人要求我使用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转换函数中编写的代码,然后必须采取措施。但我没有任何进一步的途径。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题