pyspark 名称错误:名称'SparkSession'未定义

i86rm4rw  于 2023-04-29  发布在  Spark
关注(0)|答案(2)|浏览(230)

我是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()

我该怎么解决?

6tr1vspr

6tr1vspr1#

Spark通过SparkContext与本地运行的spark集群连接。更好的解释可以在这里找到https://stackoverflow.com/a/24996767/5671433
要初始化SparkSession,必须初始化SparkContext。一种方法是编写一个初始化所有上下文和一个spark会话的函数。

def init_spark(app_name, master_config):
    """
    :params app_name: Name of the app
    :params master_config: eg. local[4]
    :returns SparkContext, SQLContext, SparkSession:
    """
    conf = (SparkConf().setAppName(app_name).setMaster(master_config))

    sc = SparkContext(conf=conf)
    sc.setLogLevel("ERROR")
    sql_ctx = SQLContext(sc)
    spark = SparkSession(sc)

    return (sc, sql_ctx, spark)

这可以称为

sc, sql_ctx, spark = init_spark("App_name", "local[4]")
31moq8wy

31moq8wy2#

你忘了加上
导入pyspark
关于PysparkSQL import SparkSession
---您的密码----

相关问题