我最近在 Ubuntu 18-LTS上设置了单节点 Hadoop集群,并且还安装了 pySpark (以及anaconda)。安装已被验证可以正常工作。但是,我无法让pySpark处理hdfs中的文件。
hduser@master:~$ hdfs dfs -ls /user/local/hadoop_data/hdfs/hduser/
Found 1 items
-rw-r--r-- 1 hduser supergroup 1979173 2018-08-07 23:01 /user/local/hadoop_data/hdfs/hduser/test.data
在python代码中,我将hdfs文件引用为:
lines = sc.textFile("hdfs:///user/local/hadoop_data/hdfs/hduser/test.data")
脚本为:
hduser@master:~$ cat count_ratings.py
from pyspark import SparkConf, SparkContext
import collections
conf = SparkConf().setMaster("local").setAppName("RatingsHistogram")
sc = SparkContext(conf = conf)
lines = sc.textFile("hdfs:///user/local/hadoop_data/hdfs/hduser/test.data")
ratings = lines.map(lambda x: x.split()[2])
result = ratings.countByValue()
... ...
我以以下方式执行脚本:
hduser@master:~$ spark-submit count_ratings.py
不幸的是,我得到了错误消息:
2018-08-08 00:02:14 INFO SparkContext:54 - Created broadcast 0 from textFile at NativeMethodAccessorImpl.java:0
Traceback (most recent call last):
File "/home/hduser/count_ratings.py", line 9, in <module>
result = ratings.countByValue()
File "/usr/local/spark/python/lib/pyspark.zip/pyspark/rdd.py", line 1279, in countByValue
... ..
我相当确定错误在于我用来引用hdfs中文件的语法中,因为当引用本地(home dir)上相同的数据副本时,相同的脚本可以成功运行。任何人都可以指出使用pySpark引用hdfs文件的语法吗?任何帮助表示赞赏。.
谢谢..