Apache spark 名称错误:名称';SparkSession';没有定义

Apache spark 名称错误:名称';SparkSession';没有定义,apache-spark,pyspark,Apache Spark,Pyspark,我不熟悉cask cdap和Hadoop环境 我正在创建一个管道,我想使用PySpark程序。我有spark程序的所有脚本,当我用命令测试它时,它可以工作,比如,如果我尝试在cdap管道中复制-粘贴它,它不会工作 它在日志中给了我一个错误: NameError: name 'SparkSession' is not defined 我的脚本是这样开始的: from pyspark.sql import * spark = SparkSession.builder.getOrCreate()

我不熟悉cask cdap和Hadoop环境

我正在创建一个管道,我想使用PySpark程序。我有spark程序的所有脚本,当我用命令测试它时,它可以工作,比如,如果我尝试在cdap管道中复制-粘贴它,它不会工作

它在日志中给了我一个错误:

NameError: name 'SparkSession' is not defined
我的脚本是这样开始的:

from pyspark.sql import *

spark = SparkSession.builder.getOrCreate()
from pyspark.sql.functions import trim, to_date, year, month
sc= SparkContext()

如何修复它?

Spark通过
SparkContext
与本地运行的Spark群集连接。这里可以找到更好的解释

要初始化
SparkSession
,必须初始化
SparkContext
。 一种方法是编写一个函数来初始化所有上下文和spark会话

def init_spark(应用程序名称、主配置):
"""
:params app_name:应用程序的名称
:参数主配置:例如本地[4]
:返回SparkContext、SQLContext、SparkSession:
"""
conf=(SparkConf().setAppName(app_name).setMaster(master_config))
sc=SparkContext(conf=conf)
sc.setLogLevel(“错误”)
sql\u ctx=SQLContext(sc)
火花=火花会话(sc)
返回(sc、sql\u ctx、spark)
这可以称为

sc,sql\u ctx,spark=init\u spark(“应用程序名称”,“本地[4]”)

您是否初始化了FindPark?听起来您使用的是Spark 1.x而不是2.x。在这种情况下,您应该更新或使用
SQLContext
。请发布
sc.version
输出。@user8371915有类似问题,
SPARK\u HOME=/opt/mapr/SPARK/SPARK-2.1.0
sc.version=2.1.0-mapr-1710
。知道会发生什么吗?@lampshadesdriver不正确的PYTHONPATH或类似属性?