【问题标题】:spark-submit throws errors, unlike pysparkspark-submit 抛出错误,不像 pyspark
【发布时间】:2015-09-03 10:02:13
【问题描述】:

我一直在使用 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()

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    您可以在此链接中阅读:http://spark.apache.org/docs/1.3.1/api/python/pyspark.sql.html

    SQLContext在创建时会在RDD中添加一个名为toDF的方法,用于将RDD转换为DataFrame,是SQLContext.createDataFrame()的简写

    因此,为了在您的 RDD 中使用 toDF 方法,您需要创建一个 sqlContext 并使用您的 SparkContext 对其进行初始化:

    from pyspark.sql import SQLContext
    ...
    sqlContext = SQLContext(sc)
    

    【讨论】:

    • 谢谢!我的注意力分散了,我一定忽略了那一点!再次感谢您!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 2017-07-12
    • 2017-08-30
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 2014-10-13
    相关资源
    最近更新 更多