如何将包含许多字段的大型 csv 加载到 Spark

Pas*_*oix 2 csv apache-spark pyspark

新年快乐!!!

我知道以前有人问过/回答过这种类似的问题,但是,我的不同:

我有 100+ 个字段和 100MB+ 的大尺寸 csv,我想将它加载到 Spark (1.6) 进行分析,csv 的标题看起来像附加的示例(只有一行数据)

非常感谢。

更新 1(美国东部时间 2016.12.31.1:26pm):

我使用以下方法并能够加载数据(具有有限列的示例数据),但是,我需要将标题(来自 csv)自动分配为 DataFrame 中的字段名称,但是,DataFrame 看起来像:

在此处输入图片说明 谁能告诉我怎么做?请注意,任何手动方式都是我想要避免的。

>>> import csv
>>> rdd = sc.textFile('file:///root/Downloads/data/flight201601short.csv') 
>>> rdd = rdd.mapPartitions(lambda x: csv.reader(x))
>>> rdd.take(5) 
>>> df = rdd.toDF() 
>>> df.show(5) 
Run Code Online (Sandbox Code Playgroud)

小智 5

如评论中所述,您可以将 spark.read.csv 用于 spark 2.0.0+ ( https://spark.apache.org/docs/2.0.0/api/python/pyspark.sql.html )

df = spark.read.csv('your_file.csv', header=True, inferSchema=True)
Run Code Online (Sandbox Code Playgroud)

header设置为True会将标题解析为数据框的列名。将inferSchema设置为True将获得表模式(但会减慢读取速度)。

另请参见此处: 使用 Spark 加载 CSV 文件