2017-02-10 74 views
0

我有一個包含多個列的rdd,並且想要提取名爲「age」的列。我試過了:將RDD列提取到新的RDD中

rddAge = df.rdd.map(lambda row: Row(age=row.age)) 

代碼沒有返回錯誤。但是當我只是試圖做一個rddAge.count(),我得到了一個很長的回溯:

Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe. 
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 29.0 failed 10 times, most recent failure: Lost task 0.9 in stage 29.0 (TID 365, yp-spark-dal09-env5-0048): org.apache.spark.api.python.PythonException: Traceback (most recent call last): ... 

我做錯了嗎?

感謝

+0

我試過你的代碼,並做得很好... 你可以發佈你做什麼與DF? –

+0

您不會轉儲堆棧跟蹤的重要組件。 – Chinny84

回答

0

您是否正在導入行?導入行對我來說工作正常

from pyspark.sql import Row 

rddAge = df.rdd.map(lambda row: Row(age=row.rddAge)) 
rddAge.count() 
0

Spark 2,您可以直接select在數據框的頂部欄,在scala相應的代碼片段是:

val ageDF = df.select("age") 
ageDF.printSchema() 

輸出:

root 
|-- age: long (nullable = true) 

希望這有助於...