【发布时间】:2017-04-22 14:52:58
【问题描述】:
我想使用 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 方法很可能比上述代码更优化。
【问题讨论】:
标签: csv apache-spark pyspark spark-dataframe