在 pyspark (1.6.0) 中读取 csv 文件

Reading a csv file in pyspark (1.6.0)

也许问题很简单,但我在从 Pyspark 中的本地目录读取 csv 时遇到问题。

我试过了,

from pyspark.sql.types import *
from pyspark.sql import Row
from pyspark import SparkContext as sc
mydata = sc.textFile("/home/documents/mydata.csv")
newdata = mydata.map(lambda line: line.split(","))

但是出现这样的错误,

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unbound method textFile() must be called with SparkContext instance as first argument (got str instance instead)

现在我的问题是我在那之前给 SparkContext 打过电话。那为什么我会收到这样的错误?请指导我的不足之处。

你没有import SparkContext as sc:

  • interactive usage(即pyspark shell)中,sc已经初始化,所以sc.textFile()应该可以正常工作
  • self-contained applications中,你应该先初始化sc

    from pyspark import SparkContext
    sc = SparkContext("local", "Simple App")
    

SparkContext() 中的参数很重要 - 请参阅提供的链接了解更多详细信息。

最后,Spark 1.x 无法将 CSV 文件本地读取到数据帧中 - 您将需要 Spark CSV external package. You may find a relevant blog post 我前段时间为 Spark 1.5 写的有用...