【问题标题】:How to open a file which is stored in HDFS in pySpark using with open如何使用 open 打开存储在 pySpark 中 HDFS 中的文件
【发布时间】:2018-12-31 20:43:02
【问题描述】:

如何打开存储在 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())

我的假设是使用 like

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

但这也没用

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    textfile读入rdd

    rdd_name = sc.textFile("/user/sachinkerala6174/inData/movieStat")
    

    您可以使用 collect() 以便在纯 python 中使用它(不推荐 - 仅用于非常小的数据),或使用 spark rdd 方法以便使用 pyspark 方法来操作它(推荐的方式)

    更多信息pyspark API:

    textFile(name, minPartitions=None, use_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!']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 2015-01-04
      • 2017-11-03
      • 2016-04-29
      • 1970-01-01
      • 2022-01-24
      相关资源
      最近更新 更多