在执行程序上访问 SparkSession 会引发错误

时间:2021-08-01 15:34:57

标签: apache-spark pyspark

我的代码流程如下所示。 get_row_group_info(path) 部分在执行程序上执行。我有一些逻辑来记录一些数据点。运行流程会引发错误:

SparkSession._activeSession.sparkContext\
AttributeError: 'NoneType' object has no attribute 'sparkContext'
def logger(mssg):
    from pyspark.sql import SparkSession

    SparkSession._activeSession.sparkContext\
    ._jvm.com.package.logInfoEvent(msg)

def get_file_system():
    #some logging logic
    logger.logInfo("Triggered")
    return fs

def get_row_group_info(path):
    fs = get_file_system()
    relative_path = os.path.relpath(path, base_path)
    pq_file = fs.open(path)
    num_row_groups = pq.read_metadata(pq_file).num_row_groups
    pq_file.close()
    return relative_path, num_row_groups

row_groups = spark_context.parallelize(paths, len(paths)) \
    .map(get_row_group_info) \
    .collect()

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

以下是从活动 SparkSession 获取 SparkContext 的方法:

  1. 对于 Spark 版本 <3.0.0

    SparkSession.builder.getOrCreate().sparkContext

  2. 对于 spark 版本 >= 3.0.0

    SparkSession.getActiveSession().sparkContext // doc