簡體   English   中英

NameError:名稱“ SparkSession”未定義

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM