使用Spark 2.0将csv读入RDD

时间:2016-12-07 15:24:30

标签: csv apache-spark pyspark spark-dataframe

我想使用Spark 2.0将csv文件读入RDD。我可以使用

将其读入数据框
df = session.read.csv("myCSV.csv", header=True,)

我可以将其作为文本文件加载,然后使用

进行处理
import csv
rdd = context.textFile("myCSV.csv")
header = rdd.first().replace('"','').split(',')
rdd = (rdd.mapPartitionsWithIndex(lambda idx, itr: itr.drop(1) if idx == 0 else itr)
        .mapPartitions(lambda x: csv.reader(x))
      )

有没有办法使用内置的csv阅读器(spark-csv)直接转到RDD而无需从数据帧转换为csv?或者上面的RDD方法是否足够好,因为内置的阅读器在引擎盖下做了类似的事情?

修改:1)同样,我不想读入数据帧然后转换为RDD。这将构建整个结构,只是立即删除它。似乎毫无意义。 2)是的,我可以计算上述时间(针对DF - > RDD转换),但这只会告诉我RDD读取解决方案是否优于转换。内置的csv到RDD方法很可能比上面的代码更优化。

1 个答案:

答案 0 :(得分:2)

您可以使用.rdd将数据帧转换为rdd,如下所示

rdd = session.read.csv("myCSV.csv", header=True).rdd