gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:52:13 27 4
gpt4 key购买 nike

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

Person person = new Person();
person.setPersonId("10");
person.setAge(20);

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

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

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

有没有办法将实体对象转换为RDD或DataFrame?

最佳答案

我建议您将 Person 对象转换为 List。而 SparkContext 可以使用“parallelize”api 将 List 转换为 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");

最后使用 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();

关于apache-spark - 使用 spark 将实体对象持久化到 HDFS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30888437/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com