0
我有以下简单的Python代码:pyspark:找不到本地文件
from __future__ import print_function
import sys
from operator import add
from pyspark import SparkContext
if __name__ == "__main__":
print(len(sys.argv))
if len(sys.argv) < 2:
print("Usage: wordcount <file>", file=sys.stderr)
exit(-1)
sc = SparkContext(appName="PythonWordCount")
lines = sc.textFile(sys.argv[2], 1)
counts = lines.flatMap(lambda x: x.split(' ')).map(lambda x: (x, 1)).reduceByKey(add)
output = counts.collect()
for (word, count) in output:
print("%s: %i" % (word, count))
sc.stop()
然后我试图做一个本地群集上运行:
spark-submit --master spark://rws-lnx-sprk01:7077 /home/edamameQ/wordcount.py wordcount /home/edamameQ/wordTest.txt
的wordTest。 TXT绝对可用:
[email protected]:~$ ls
data jars myJob.txt wordTest.txt wordcount.py
但我不断收到错误:
Driver stacktrace:
at org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1283)
at org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1271)
at org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1270)
at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
:
:
Caused by: java.io.FileNotFoundException: File file:/home/edamameQ/wordTest.txt does not exist
at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:520)
at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:398)
at org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSInputChecker.<init>(ChecksumFileSystem.java:137)
at org.apache.hadoop.fs.ChecksumFileSystem.open(ChecksumFileSystem.java:339)
相同的代码在AWS上处理来自s3位置的输入文件。有什么我需要调整以在本地集群上运行?谢谢!
谢谢!但是,当我在斯卡拉执行Spark工作时,我怎么会这样做?我不需要将文件交给所有工作人员?在斯卡拉,我只是把文件放在一个位置,它能正常工作。 scala中的pyspark和spark是否有区别?谢谢! – Edamame
不应该有。你能描述一下你的配置吗? – zero323
本地火花簇以spark 1.5.1的独立模式安装。它有一个主人和五个奴隶。我将所有必需的输入文本文件放在主节点本地磁盘中。我在scala中有一个spark工作,它读取本地磁盘中的文件,创建RDD,它是一个更复杂的工作,并且工作正常。现在我正试图在群集上测试pyspark,但它找不到该文件。即使我只是把这个文件用在另一个scala工作中,在上面的pyspark工作中找不到它。请让我知道,如果有任何额外的信息,我应该提供。谢谢! – Edamame