2016-11-10 105 views
0

如何打开存储在HDFS中的文件 - 此处输入文件来自HDFS - 如果我将文件作为波纹管,我将无法开放的,它会显示为找不到文件如何使用open打开存储在pySpark中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: 

但也没有工作

回答

1

阅读文本文件到RDD:

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

您可以使用“收集()”,以纯Python中使用(不推荐 - 只使用在非常小的数据),或者使用火花RDD方法,以便使用pyspark方法(推荐的方式来操纵它)

更多信息: http://spark.apache.org/docs/2.0.1/api/python/pyspark.html

文本文件(名称,minPartitions =无,use_unicode = TRUE)

阅读从HDFS,本地文件系统(所有节点上的文本文件) ,或者一个y 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!'] 
相关问题