Będziesz musiał użyć DataFrame Spark jako pośredni etap pomiędzy twoją RDD i pożądanego pandy DataFrame.
Na przykład, powiedzmy, że mam plik tekstowy, flights.csv
, które zostały odczytane w do RDD:
flights = sc.textFile('flights.csv')
Można sprawdzić typ:
type(flights)
<class 'pyspark.rdd.RDD'>
Jeśli wystarczy użyć toPandas()
na RDD, to nie zadziała. W zależności od formatu obiektów w RDD, niektóre przetwarzanie może być konieczne, aby przejść do Spark DataFrame. W przypadku tego przykładu, kod ten spełnia swoje zadanie:
# RDD to Spark DataFrame
sparkDF = flights.map(lambda x: str(x)).map(lambda w: w.split(',')).toDF()
#Spark DataFrame to Pandas DataFrame
pdsDF = sparkDF.toPandas()
Można sprawdzić typ:
type(pdsDF)
<class 'pandas.core.frame.DataFrame'>
myślę 'pdsDF = sparkDF.toPandas' brakuje() faktycznie nazwać metoda. Powinno to być: 'pdsDF = sparkDF.toPandas()' – learn2day