Pyspark-纱线上不存在输入路径.本地工作正常



我是Spark和Python的新手当我在本地模式下运行它时,一切都很好。当我尝试在群集中运行它(没有hadoop的火花2.1.2),我会收到相同的错误。
我希望此信息足够了。

我该怎么办,脚本以纱线运行?

from pyspark import SparkContext, SparkConf
import sys
import collections
import os
from subprocess import call, Popen
import numpy
import re
import requests
import json
import math
from bs4 import BeautifulSoup
from bs4.element import Comment
sc = SparkContext("yarn", "test")
record_attribute = sys.argv[1]
in_file = sys.argv[2]

#Read warc file and split in WARC/1.0
rdd = sc.newAPIHadoopFile(in_file,
    "org.apache.hadoop.mapreduce.lib.input.TextInputFormat",
    "org.apache.hadoop.io.LongWritable",
    "org.apache.hadoop.io.Text",
    conf={"textinputformat.record.delimiter": "WARC/1.0"})

这是错误

7/11/30 14:05:48 INFO spark.SparkContext: Created broadcast 1 from broadcast at PythonRDD.scala:553
Traceback (most recent call last):
  File "/home/test/script.py", line 51, in <module>
    ,conf={"textinputformat.record.delimiter": "WARC/1.0"})
  File "/home/test/spark-2.1.2-bin-without-hadoop/python/lib/pyspark.zip/pyspark/context.py", line 651, in newAPIHadoopFile
  File "/home/test/spark-2.1.2-bin-without-hadoop/python/lib/py4j-0.10.4-src.zip/py4j/java_gateway.py", line 1133, in __call__
  File "/home/test/spark-2.1.2-bin-without-hadoop/python/lib/py4j-0.10.4-src.zip/py4j/protocol.py", line 319, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.newAPIHadoopFile. org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist

当我在本地模式下运行它时,一切都很好

您正在加载本地文件系统中的文件,然后

当您部署到群集时,您需要确保所有执行者(yarn resourcemanagers)或某些共享文件系统(例如HDFS或S3

)确保in_file存在>

您应该指定数据在该bash脚本中的位置,例如 hdfs:///some/input/in_file

如果您不将Hadoop群集的core-site.xmlhdfs-site.xml复制到本地HADOOP_CONF_DIR环境变量,或者以其他方式进行配置,则默认行为是读取本地文件系统,因此您将需要使用外部文件系统URI PATH。例如,HDFS处于格式hdfs://namenode:port/some/input/in_file

注意:您需要首先将文件上传到远程文件系统

您是否正确配置了HADOOP_CONF_DIRYARN_CONF_DIR?该目录应包含HDFS和纱线服务的客户端配置。因此,Spark应用程序可以从纱线中获取资源,并且应用程序可以对HDFS执行读/写操作。

请检查下面给出的文档,该文档为您提供有关在纱线上遵循的先决条件的信息。

https://spark.apache.org/docs/2.1.1/running-on-yarn.html

如果您从Cloudera Manager或Ambari Server部署Spark,则与客户端配置关联的所有环境变量都将由其本身部署。

在纱线群集模式下运行Python Sparkpi

运行pi.py文件:

spark-submit --master yarn --deploy-mode cluster SPARK_HOME/lib/pi.py 10

请参阅以下链接以获取更多信息:"在纱线上运行Spark应用程序"。

相关内容

  • 没有找到相关文章

最新更新