W pyspark, powiedzmy, że masz dataframe nazwie jak userDF.
>>> type(userDF)
<class 'pyspark.sql.dataframe.DataFrame'>
Pozwala właśnie przekonwertować go do RDD (
userRDD = userDF.rdd
>>> type(userRDD)
<class 'pyspark.rdd.RDD'>
a teraz można zrobić pewne manipulacje i nazwać na przykład mapy funkcję:
newRDD = userRDD.map(lambda x:{"food":x['favorite_food'], "name":x['name']})
Wreszcie, pozwala stworzyć DataFrame z sprężysta rozproszony zbiór danych (RDD) .
newDF = sqlContext.createDataFrame(newRDD, ["food", "name"])
>>> type(ffDF)
<class 'pyspark.sql.dataframe.DataFrame'>
To wszystko.
byłem uderzenie to ostrzeżenie przed kiedy próbowałem zadzwonić:
newDF = sc.parallelize(newRDD, ["food","name"] :
.../spark-2.0.0-bin-hadoop2.7/python/pyspark/sql/session.py:336: UserWarning: Using RDD of dict to inferSchema is deprecated. Use pyspark.sql.Row inst warnings.warn("Using RDD of dict to inferSchema is deprecated. "
Więc nie trzeba tego robić ...
To nie jest do końca jasne z pytaniem gdzie masz problem . Czy to fakt, że masz tyle kolumn? Czy tylko zapisy twojego RDD to listy krotek? –