python - pyspark:找不到本地文件

标签 python hadoop apache-spark filesystems pyspark

我有以下简单的 python 代码:

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 绝对可用:

edamameQ@spark-cluster:~$ 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 位置的输入文件。为了在本地集群上运行,我需要调整什么吗?谢谢!

最佳答案

您要阅读的文件必须可供所有工作人员访问。如果这是一个本地文件,唯一的选择是为每台工作机器保留一份副本。

关于python - pyspark:找不到本地文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34051598/

相关文章:

java - Flume的一些问题

java - 使用 Spark Java API 2.2 使用列不是数字的地方过滤数据集?

java - getstrings方法hadoop中的空指针异常

csv - 如何在IPython Notebook中加载jar依赖项

apache-spark - 在YARN中启用CPU调度是否会真正改善Spark中的并行处理?

Python:如何在 Flask 应用程序的表格中显示来自 MySQL 查询的数据

python - TensorFlow:在多台机器上进行训练时,数据并行端点的目的是什么?

python - IndexError : list index out of range. 谁能帮我解决这个Python代码吗?包括 numpy 和 pandas 的概念

apache-spark - Spark : filter out all rows based on key/value

python - 如何批量获取/放置 Yahoo 联系人