我正在尝试使用spark-submit命令在本地运行以下Python脚本:
import sys
sys.path.insert(0, '.')
from pyspark import SparkContext, SparkConf
from commons.Utils import Utils
def splitComma(line):
splits = Utils.COMMA_DELIMITER.split(line)
return "{}, {}".format(splits[1], splits[2])
if __name__ == "__main__":
conf = SparkConf().setAppName("airports").setMaster("local[2]")
sc = SparkContext(conf = conf)
airports = sc.textFile("in/airports.text")
airportsInUSA = airports\
.filter(lambda line : Utils.COMMA_DELIMITER.split(line)[3] == "\"United States\"")
airportsNameAndCityNames = airportsInUSA.map(splitComma)
airportsNameAndCityNames.saveAsTextFile("out/airports_in_usa.text")
使用的命令(在项目目录中):
spark-submit rdd/AirportsInUsaSolution.py
我一直收到这个错误:
导入回溯(最近一次调用):文件"/home/gustavo/Documentos/TCC/python_spark_yt/python-spark-tutorial/rdd/AirportsInUsaSolution.py",第4行,来自commons.Utils导入实用程序ImportError:没有名为commons.Utils的模块
即使有一个带有Utils类的commons.Utils。
它似乎只接受来自Spark的imports
,因为当我试图从我的项目导入任何其他类或文件时,这个错误仍然存在。
发布于 2018-10-17 03:32:48
from pyspark import SparkContext, SparkConf
def splitComma(line):
splits = Utils.COMMA_DELIMITER.split(line)
return "{}, {}".format(splits[1], splits[2])
if __name__ == "__main__":
conf = SparkConf().setAppName("airports").setMaster("local[2]")
sc = SparkContext(conf = conf)
sc.addPyFile('.../pathto commons.zip')
from commons import Utils
airports = sc.textFile("in/airports.text")
airportsInUSA = airports\
.filter(lambda line : Utils.COMMA_DELIMITER.split(line)[3] == "\"United States\"")
airportsNameAndCityNames = airportsInUSA.map(splitComma)
airportsNameAndCityNames.saveAsTextFile("out/airports_in_usa.text")
是的,它只接受来自Spark的那些。您可以压缩所需的文件(Util、numpy)等,并在spark-submit中指定参数--py-files
。
spark-submit --py-files rdd/file.zip rdd/AirportsInUsaSolution.py
发布于 2019-08-09 07:28:59
要让python将目录视为包,您需要在该目录中创建__init__.py。__init__.py文件不需要包含任何内容。
在这种情况下,一旦您在commons目录中创建了__init__.py,您就可以访问该包。
发布于 2019-11-05 21:10:03
创建一个名为:Utils.py
的python脚本,它将包含:
import re
class Utils():
COMMA_DELIMITER = re.compile(''',(?=(?:[^"]*"[^"]*")*[^"]*$)''')
将此Utils.py
python脚本放在commons
文件夹中,并将此文件夹放在您的工作目录中(键入pwd
即可了解它)。然后,您可以导入Utils
类:
from commons.Utils import Utils
希望能对你有所帮助。
https://stackoverflow.com/questions/52842608
复制相似问题