spark-submit 抛出错误,不像 pyspark
spark-submit throws errors, unlike pyspark
我一直在使用 Ipython 笔记本测试脚本并将 pyspark 传递给它。我想完成的一切都很顺利。
我也 运行 它没有笔记本,从命令行使用 pyspark 和工作。
使用版本 1.3.1
使用 spark-submit 将其作为作业提交时
spark-submit --master local[*] myscript.py
我收到以下错误:
x_map = rdd.map(lambda s: (s[1][1],s[1][3])).distinct().toDF().toPandas()
AttributeError: 'PipelinedRDD' object has no attribute 'toDF'
我的脚本开头如下所示:
from pyspark import SparkContext
sc = SparkContext(appName="Whatever")
from pyspark.sql.types import *
from pyspark.sql import Row
import statsmodels.api as sm
import pandas as pd
import numpy as np
import sys
[..] other python modules
rdd = sc.textFile(input_file)
rdd = rdd.map(lambda line: (line.split(",")[1],[x for x in line.split(",")])).sortByKey()
x_map = rdd.map(lambda s: (s[1][1],s[1][3])).distinct().toDF().toPandas()
如您所见,link:http://spark.apache.org/docs/1.3.1/api/python/pyspark.sql.html
When created, SQLContext adds a method called toDF to RDD, which could be used to convert an RDD into a DataFrame, it’s a shorthand for SQLContext.createDataFrame()
因此,为了在您的 RDD 中使用 toDF 方法,您需要创建一个 sqlContext 并使用您的 SparkContext 对其进行初始化:
from pyspark.sql import SQLContext
...
sqlContext = SQLContext(sc)
我一直在使用 Ipython 笔记本测试脚本并将 pyspark 传递给它。我想完成的一切都很顺利。
我也 运行 它没有笔记本,从命令行使用 pyspark 和工作。
使用版本 1.3.1
使用 spark-submit 将其作为作业提交时
spark-submit --master local[*] myscript.py
我收到以下错误:
x_map = rdd.map(lambda s: (s[1][1],s[1][3])).distinct().toDF().toPandas()
AttributeError: 'PipelinedRDD' object has no attribute 'toDF'
我的脚本开头如下所示:
from pyspark import SparkContext
sc = SparkContext(appName="Whatever")
from pyspark.sql.types import *
from pyspark.sql import Row
import statsmodels.api as sm
import pandas as pd
import numpy as np
import sys
[..] other python modules
rdd = sc.textFile(input_file)
rdd = rdd.map(lambda line: (line.split(",")[1],[x for x in line.split(",")])).sortByKey()
x_map = rdd.map(lambda s: (s[1][1],s[1][3])).distinct().toDF().toPandas()
如您所见,link:http://spark.apache.org/docs/1.3.1/api/python/pyspark.sql.html
When created, SQLContext adds a method called toDF to RDD, which could be used to convert an RDD into a DataFrame, it’s a shorthand for SQLContext.createDataFrame()
因此,为了在您的 RDD 中使用 toDF 方法,您需要创建一个 sqlContext 并使用您的 SparkContext 对其进行初始化:
from pyspark.sql import SQLContext
...
sqlContext = SQLContext(sc)