Apache spark 使用spark将实体对象持久化到HDFS

Apache spark 使用spark将实体对象持久化到HDFS,apache-spark,hdfs,Apache Spark,Hdfs,我有一个person对象,如下所示: Person-Person=新的Person(); person.setPersonId(“10”); 人。设置(20); 我想使用Spark将其保存在HDFS中。可以使用spark中DataFrame类的save方法完成,如下所示: dataFrame.save(“hdfs://localhost:9000/sample.json"); 但我还没有找到任何方法将实体对象转换为RDD或DataFrame 有没有办法将实体对象转换为RDD或数据帧 我建议您将

我有一个person对象,如下所示:

Person-Person=新的Person();
person.setPersonId(“10”);
人。设置(20);

我想使用Spark将其保存在HDFS中。可以使用spark中DataFrame类的save方法完成,如下所示:

dataFrame.save(“hdfs://localhost:9000/sample.json");

但我还没有找到任何方法将实体对象转换为
RDD
DataFrame


有没有办法将实体对象转换为RDD或数据帧

我建议您将Person对象转换为List。 SparkContext可以使用“并行化”api将列表转换为RDD。 RDD可以使用“saveAsObjectFile”api按顺序文件保存到hdfs。 我想你应该用Java编程。下面是一个示例代码

  SparkConf sparkConf = new SparkConf().setAppName("SparkSaveToHDFS");
 JavaSparkContext ctx = new JavaSparkContext(sparkConf);

 Person Peter = new Person();
 Peter.setName("Peter");
 Peter.setAge(30);
 Person Kevin = new Person();
 Kevin.setName("Kevin");
 Kevin.setAge(40);

 List<Person> personList = new ArrayList<Person>();
 personList.add(0, Peter);
 personList.add(1,Kevin);
 System.out.println("list contains Peter : " + personList.contains(Peter) + Peter.getAge());
 System.out.println("list contains Kevin : " + personList.contains(Kevin) + Kevin.getAge());

 JavaRDD<Person> personRdd = ctx.parallelize(personList);
 personRdd.saveAsObjectFile("hdfs://hadoop-master:8020/Peter/test");     
SparkConf SparkConf=new SparkConf().setAppName(“SparkSaveToHDFS”);
JavaSparkContext ctx=新的JavaSparkContext(sparkConf);
人彼得=新人();
Peter.setName(“Peter”);
彼得·塞塔奇(30);
Person=new Person();
Kevin.setName(“Kevin”);
凯文·塞塔奇(40);
List personList=新建ArrayList();
personList.add(0,Peter);
个人列表。添加(1,Kevin);
System.out.println(“列表包含Peter:+personList.contains(Peter)+Peter.getAge());
System.out.println(“列表包含Kevin:+personList.contains(Kevin)+Kevin.getAge());
javarddpersonrdd=ctx.parallelize(personList);
personRdd.SaveAsObject文件(“hdfs://hadoop-master:8020/Peter/test");     
最后使用SparkContext“objectFile”api将hdfs实体转换为RDD。 示例代码如下所示

 JavaRDD<Person> getPersonRdd = ctx.objectFile("hdfs://hadoop-master:8020/Peter/test");
    DataFrame schemaPeople = sqlContext.createDataFrame(getPersonRdd, Person.class);
    schemaPeople.registerTempTable("people");
    schemaPeople.printSchema();
    DataFrame people = sqlContext.sql("select * from people");
    people.show();
JavaRDD getPersonRdd=ctx.objectFile(“hdfs://hadoop-master:8020/Peter/test");
DataFrame schemaPeople=sqlContext.createDataFrame(getPersonRdd,Person.class);
schemaPeople.RegisterEmptable(“人”);
schemaPeople.printSchema();
DataFrame-people=sqlContext.sql(“从人中选择*);
人。秀();