[英]NameError: name 'SparkSession' is not defined
我不熟悉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集群SparkContext
。 可以在這里找到更好的解釋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]")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.