如何从包含列表对象的RDD创建DataFrame?

时间:2015-10-06 16:48:24

标签: java apache-spark apache-spark-sql

我想知道是否可以从包含具有单个List的类的JavaRDD创建DataFrame。

E.g。为包含以下类DataRecord的对象的RDD创建数据框:

public class DataRecord implements Serializable{

    private List<Object> values;

    public DataRecord(List<Object> values){
        this.values = values;
    }
}   

遵循这个想法(不工作)

JavaRDD<String> rdd= sc.textFile("hdfs//...").
    .map( new Function<String, DataRecord>(){
        @Override
        public DataRecord call(String line) throws Exception{
              String[] fields = line.split(",");
               List<Object> values = new ArrayList<Object>();
                for(int i=0; i<fields.length; i++){
                    values.add(field[i]);
                }
        return new DataRecord(values);
});
DataFrame schemaLogMessages = sqlContext.createDataFrame(rdd, DataRecord.class); //Does not work
schemaLogMessages.registerTempTable("rdd");
DataFrame df = sqlContext.sql("SELECT * FROM rdd");

基本上我正在寻找一种通用方法来读取任何逗号分隔文件并从中创建数据帧。所以它不一定是列表,但由于列可以变化,我认为我们需要一个列表。

此致

0 个答案:

没有答案