我需要将PipelinedRDD存储到hadoop文件中

我需要将PipelinedRDD存储到hadoop文件中,hadoop,apache-spark,hdfs,pyspark,rdd,Hadoop,Apache Spark,Hdfs,Pyspark,Rdd,我在PySpark中完成了所有这些 首先,我将一个文件从HDFS读入RDD: distFile=sc.textFile("hdfs.......tsv") 然后我将它们按列拆分: newfile = distFile.map(lambda line: line.split('\t')) 然后我提取我需要的列: A = newfile.map(lambda r: [r[25], r[79], r[108], r[451]]).collect() 现在A是一个pipelinedRDD,有很多行

我在PySpark中完成了所有这些

首先,我将一个文件从HDFS读入RDD:

distFile=sc.textFile("hdfs.......tsv")
然后我将它们按列拆分:

newfile = distFile.map(lambda line: line.split('\t'))
然后我提取我需要的列:

A = newfile.map(lambda r: [r[25], r[79], r[108], r[451]]).collect()

现在A是一个pipelinedRDD,有很多行和四列。我需要在HDFS上存储一个。我该怎么做呢?

A
不是
RDD
,而是一个本地列表。如果您想保留
RDD
,请不要使用
collect
。要保存文件,您可以使用例如
saveAsTextFile
方法:

newfile.map(
    lambda r: [r[25], r[79], r[108], r[451]]
).saveAsTextFile(some_hdfs_path)

你的意思是如果我这样做:A=newfile.map(lambda r:[r[25],r[79],r[108],r[451])。A是RDD。但是,如果我这样做:A=newfile.map(lambda r:[r[25],r[79],r[108],r[451]]).collect(),A是一个列表?是的,这正是我的意思。