Python 如何使PySpark进程成为hdfs文件
我最近在Ubuntu18-LTS上安装了一个单节点Hadoop集群,还安装了pySpark(以及anaconda)。已验证安装是否正常工作。但是,我无法让pySpark处理hdfs中的文件Python 如何使PySpark进程成为hdfs文件,python,ubuntu,hadoop,pyspark,hdfs,Python,Ubuntu,Hadoop,Pyspark,Hdfs,我最近在Ubuntu18-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/h
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
... ..
2018-08-08 00:02:14信息SparkContext:54-从NativeMethodAccessorImpl.java:0的文本文件创建广播0
回溯(最近一次呼叫最后一次):
文件“/home/hduser/count_ratings.py”,第9行,在
结果=评级。countByValue()
文件“/usr/local/spark/python/lib/pyspark.zip/pyspark/rdd.py”,第1279行,countByValue格式
... ..
我相当肯定错误在于我在hdfs中引用文件时使用的语法,因为在本地(home dir)上引用相同的数据副本时,相同的脚本会成功运行。任何人都可以指出使用pySpark引用hdfs文件的语法吗?谢谢你的帮助
谢谢..您为hdfs配置了什么?首先,
INFO
消息不是错误。。。第二,这是一个非常奇怪的HDFS路径<代码>/user/local/hadoop\u data/hdfs/hduser。。。你为什么不上传到hdfs:///user/hduser/
直接?您是否尝试过pyspark
REPL?我得到的错误是连接被拒绝错误:Traceback(最近一次调用):文件“/home/hduser/count_ratings.py”,第10行,在result=ratings.countByValue()中:java.net.ConnectException:从master/XXX.XXX.X.X调用localhost:9000失败,连接异常:java.net.ConnectException:连接被拒绝;有关更多详细信息,请参阅:http://wiki.apache.org/hadoop/ConnectionRefused
。此外,当我尝试检查相同的错误时,它会给出相同的错误:-$telnet localhost Trying::1。。。正在尝试127.0.0.1。。。telnet:无法连接到远程主机:连接被拒绝