Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从包含列表对象的RDD创建数据帧?_Java_Apache Spark_Apache Spark Sql - Fatal编程技术网

Java 如何从包含列表对象的RDD创建数据帧?

Java 如何从包含列表对象的RDD创建数据帧?,java,apache-spark,apache-spark-sql,Java,Apache Spark,Apache Spark Sql,我想知道是否有可能从包含单个列表的类的JavaRDD创建数据帧 例如,为包含以下DataRecord类对象的RDD创建数据帧: public class DataRecord implements Serializable{ private List<Object> values; public DataRecord(List<Object> values){ this.values = values; } } 公共类D

我想知道是否有可能从包含单个列表的类的JavaRDD创建数据帧

例如,为包含以下DataRecord类对象的RDD创建数据帧:

public class DataRecord implements Serializable{

    private List<Object> values;

    public DataRecord(List<Object> values){
        this.values = values;
    }
}   
公共类DataRecord实现可序列化{
私有列表值;
公共数据记录(列表值){
这个值=值;
}
}   
遵循想法(不起作用)

JavaRDD rdd=sc.textFile(“hdfs/…”)。
.map(新函数(){
@凌驾
公共DataRecord调用(字符串行)引发异常{
String[]fields=line.split(“,”);
列表值=新的ArrayList();

对于(int i=0;i实际上,没有一列,csv的使用也是错误的,因为列“不同”Row1:2015-10-05 ErrorID=1 testrun=fail Row2:2015-10-05 ErrorID=NULL,所以我想从具有不同列表的数据记录中获得一个数据帧。但是,我最终筛选了数据帧,并将其拆分为不同的数据帧,其中每个df只包含具有相同列的行。我想这对我来说是可行的。抱歉,我实际上错过了
Object
part。这需要在DataRecord的适当getter和setter之上使用UDT。实际上,没有一个列,而且csv的使用也是错误的,因为列“不同”Row1:2015-10-05 ErrorID=1 testrun=fail Row2:2015-10-05 ErrorID=NULL,所以我想从具有不同列表的数据记录中获得一个数据帧。但是,我最终筛选了数据帧,并将其拆分为不同的数据帧,其中每个df只包含具有相同列的行。我想这对我来说是可行的。抱歉,我实际上错过了
Object
part。这将需要在DataRecord的适当getter和setter之上使用UDT。
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");