2015-08-25 72 views
1

我有一个CSV文件queries.txt和我读的文件是这样的:如何为每个RDD星火流

JavaRDD<String> distFile = sc.textFile("queries.txt"); 

queries.txt的模式文件是: Uniq_Id ,,, ... csv中的一些数字值...

我需要为每一行创建一个HashMap,其关键字是第一列的queries.txt文件(Uniq_Id),值是文件中的其他列到HashMap。

示例。 (这是不是真实的,而不是一个工作的例子,我只是想表达的精髓)

HashMap totalMap = new HashMap<Integer, NumericValues>(); 

for(int i=0;i<distFile.size();i++) 
{ 
    String line = distFile[i].getColumns(); 
    for(int y=0;y<line.size();y++) 
    { 
     totalMap.put(line.getFirstColumn,line.getRemainingColumns); 
    } 
} 

这里NumericValues是将变量映射到文件中的列我的自定义类。

其他任何建议都会有帮助。

回答

4

我想这就是你要找的,但这个例子不解析CSV行本身。

JavaRDD<String> distFile = sc.textFile("queries.txt"); 
    HashMap totalMap = new HashMap<Integer, NumericValues>(); 
    distFile.foreach(new VoidFunction<String>(){ 
      public void call(String line) { 
       totalMap.put(yourCSVParser(line)); //this is dummy function call 
    }});