2016-05-07 10 views
1

In EMR Spark, ich habe ein HadoopRDDWie konvertiert man HadoopRDD zu DataFrame in EMR Spark?

org.apache.spark.rdd.RDD[(org.apache.hadoop.io.Text, org.apache.hadoop.dynamodb.DynamoDBItemWritable)] = HadoopRDD[0] at hadoopRDD 

ich das DataFrame org.apache.spark.sql.DataFrame konvertieren möchten.

Weiß jemand, wie man das macht?

+0

überprüfen Sie bitte diese http://stackoverflow.com/questions/29383578/how- to-convert-rdd-objekt-zu-datenframe-in-spark –

Antwort

1

Zuerst konvertieren Sie es in einfache Typen. Lassen Sie uns sagen, dass Ihre DynamoDBItemWritable hat nur einen String-Spalte:

val simple: RDD[(String, String)] = rdd.map { 
    case (text, dbwritable) => (text.toString, dbwritable.getString(0)) 
} 

Dann können Sie toDF verwenden, um einen Datenrahmen zu erhalten:

import sqlContext.implicits._ 
val df: DataFrame = simple.toDF() 
+0

Danke, aber wenn ich den ersten Befehl ausführen, um es in einen einfacheren Typ zu konvertieren gibt es folgenden Fehler: 'scala> val einfach: RDD [(String, String)] = orders.map {fall (text, dbwritable) => (text.toString, dbwritable.getString (0))} : 43: Fehler: Wert getString ist n ot ein Mitglied von org.apache.hadoop.dynamodb.DynamoDBItemWritable val einfach: RDD [(String, String)] = orders.map {fall (text, dbwritable) => (text.toString, dbwritable.getString (0)) } ' ^ – Shweta

+0

[Es ist dort im Quellcode.] (Https://github.com/Willet/Hadoop-DynamoDB/blob/7ba3df83b452e92c745c6dbc9012b9a0876756cf/src/main/java/com/wiletinc/hadoop/mapreduce/dynamodb/io /DynamoDBItemWritable.java#L122) Vielleicht ist es eine andere Version? Überprüfe einfach die Methoden deines 'DynamoDBItemWritable' und finde einen, der primitive Typen daraus liest. –

Verwandte Themen