2015-06-17 2 views
3

У меня есть объект человека, как показано ниже:Упорство объект сущности к HDFS с помощью искры

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

Я хочу, чтобы сохранить его в HDFS с помощью искры. Это может быть сделано с помощью метода сохранения класса DataFrame в искры, как показано ниже:

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

, но я не нашел какой-либо метод для преобразования объекта сущностей в RDD или DataFrame

Есть ли способ, чтобы преобразовать объект объекта в RDD или DataFrame?

ответ

3

Предлагаю вам преобразовать объект Person в список. И SparkContext может использовать «parallelize» api для преобразования List be 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 апи «Объектный_файл», чтобы получить HDFS объект в РДУ. Пример кода, приведенного ниже

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(); 
Смежные вопросы