Apache spark 如何使用with open在pySpark中打开HDFS中存储的文件

Apache spark 如何使用with open在pySpark中打开HDFS中存储的文件,apache-spark,pyspark,Apache Spark,Pyspark,如何打开存储在HDFS中的文件-此处输入文件来自HDFS-如果我以下面的方式提供文件,我将无法打开,它将显示为“未找到文件” from pyspark import SparkConf,SparkContext conf = SparkConf () sc = SparkContext(conf = conf) def getMovieName(): movieNames = {} with open ("/user/sachinkerala6174/inData/movieSt

如何打开存储在HDFS中的文件-此处输入文件来自HDFS-如果我以下面的方式提供文件,我将无法打开,它将显示为“未找到文件”

from pyspark import SparkConf,SparkContext
conf = SparkConf ()
sc = SparkContext(conf = conf)
def getMovieName():
    movieNames = {}
    with open ("/user/sachinkerala6174/inData/movieStat") as f:
        for line in f:
            fields = line.split("|")
            mID = fields[0]
            mName = fields[1]
            movieNames[int(fields[0])] = fields[1]
            return movieNames
nameDict = sc.broadcast(getMovieName())
我的假设是使用

with open (sc.textFile("/user/sachinkerala6174/inData/movieStat")) as f:

但是将
textfile
读入
rdd
也不起作用:

rdd_name = sc.textFile("/user/sachinkerala6174/inData/movieStat")
您可以使用
collect()
在纯python中使用它(不推荐-仅在非常小的数据上使用),或者使用spark
rdd
方法使用
pyspark
方法操作它(推荐的方法)

更多信息:

textFile(name,minPartitions=None,使用unicode=True)

从本地文件系统HDFS读取文本文件(在所有 节点)或任何Hadoop支持的文件系统URI,并将其作为 字符串的RDD

如果use_unicode为False,则字符串将保留为str(编码为 utf-8),它比unicode更快、更小。(在Spark 1.2中添加)

>>> path = os.path.join(tempdir, "sample-text.txt")
>>> with open(path, "w") as testFile:
...    _ = testFile.write("Hello world!")
>>> textFile = sc.textFile(path)
>>> textFile.collect()
[u'Hello world!']