关于spark提交作业报错原因

来源:互联网 发布:淘宝ltvvy模特是谁 编辑:程序博客网 时间:2024/05/22 06:32

spark提供了scala,java及python等脚本作业的功能,但是在实际运行中很容易卡在sc初始化问题上,这里主要原因在于启动spark环境后系统会自建sc环境,若用户在脚本中新建sc将会报错,但是不使用sc又难以达到脚本的效果,这里提供python脚本的提交方法说明:

spark-submit –master local[4] svm.py

或者

spark-submit –master=spark://namenode1-sit.xxxxxxxx.com:7077 classification.py

而其中关于svm.py的内容则应该这么写:

from pyspark import SparkContextfrom pyspark.mllib.classification import SVMWithSGD, SVMModelfrom pyspark.mllib.regression import LabeledPoint# Load and parse the datadef parsePoint(line):    values = [float(x) for x in line.split(' ')]    return LabeledPoint(values[0], values[1:])if __name__ == "__main__":        sc = SparkContext(appName="PythonSVM")        data = sc.textFile("data/mllib/sample_svm_data.txt")        parsedData = data.map(parsePoint)        model = SVMWithSGD.train(parsedData, iterations=100)        labelsAndPreds = parsedData.map(lambda p: (p.label, model.predict(p.features)))        trainErr = labelsAndPreds.filter(lambda (v, p): v != p).count() / float(parsedData.count())        print("Training Error = " + str(trainErr))        model.save(sc, "myModelPath/lg")        sameModel = SVMModel.load(sc, "myModelPath/lg")        sc.stop()

这里面有关键的三点,一是该脚本文件要以main函数运行,二是重新修改sc的应用名称(master可以在外部传参时修改),三则是在运行结束后要关闭sc,以防止跟pyspark环境的sc产生冲突报错。

PS:spark各大组件应用的输入类型,sparkSQL和ml主要针对DataFrame操作,而spark MLLib主要针对RDD类型操作:

0 0
原创粉丝点击