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

时间:2016-12-31 16:52:43

标签: csv apache-spark pyspark

新年快乐!!!

我知道这种类似的问题之前已被提及/回答过,但是,我的不同之处在于:

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

非常感谢。

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

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

enter image description here 谁能告诉我怎么做?注意,任何手动方式都是我想要避免的。

>>> 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) 

1 个答案:

答案 0 :(得分:3)

如评论中所述,您可以将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)

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

另见: Load CSV file with Spark