2016-11-10 43 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!'] 
相關問題