用Spark加载CSV文件

发布于 2021-01-29 17:32:30

我是Spark的新手,正在尝试使用Spark从文件读取CSV数据。这是我在做什么:

sc.textFile('file.csv')
    .map(lambda line: (line.split(',')[0], line.split(',')[1]))
    .collect()

我希望此调用能给我列出文件的前两列,但出现此错误:

File "<ipython-input-60-73ea98550983>", line 1, in <lambda>
IndexError: list index out of range

尽管我的CSV文件不止一列。

关注者
0
被浏览
41
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您确定 所有 行都至少有2列?您可以尝试类似的方法吗?

    sc.textFile("file.csv") \
        .map(lambda line: line.split(",")) \
        .filter(lambda line: len(line)>1) \
        .map(lambda line: (line[0],line[1])) \
        .collect()
    

    或者,您可以打印罪魁祸首(如果有):

    sc.textFile("file.csv") \
        .map(lambda line: line.split(",")) \
        .filter(lambda line: len(line)<=1) \
        .collect()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看