In pyspark, diciamo che avete un dataframe chiamato come userDF.
>>> type(userDF)
<class 'pyspark.sql.dataframe.DataFrame'>
consente solo convertirlo in RDD (
userRDD = userDF.rdd
>>> type(userRDD)
<class 'pyspark.rdd.RDD'>
e ora si può fare alcune manipolazioni e chiamare ad esempio mappa delle funzioni:
newRDD = userRDD.map(lambda x:{"food":x['favorite_food'], "name":x['name']})
Infine, consente di creare un dataframe da resiliente set di dati distribuiti (RDD).
newDF = sqlContext.createDataFrame(newRDD, ["food", "name"])
>>> type(ffDF)
<class 'pyspark.sql.dataframe.DataFrame'>
Questo è tutto.
sono stato colpito questo messaggio di avviso prima, quando ho provato a chiamare:
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. "
Quindi nessun bisogno di farlo più ...
Non è esattamente chiaro dalla tua domanda dove hai problemi . È il fatto che tu abbia così tante colonne? O solo che i record del tuo RDD sono elenchi di tuple? –