我创建了一个文件来访问所有全局变量。我无法访问 pyspark-sql 查询中定义的 UDF 中的全局变量

Posted

技术标签:

【中文标题】我创建了一个文件来访问所有全局变量。我无法访问 pyspark-sql 查询中定义的 UDF 中的全局变量【英文标题】:I created a file to access all the global variables. I am unable to access global variable in the UDFs defined in pyspark-sql queries 【发布时间】:2020-07-15 20:46:34 【问题描述】:

具有已定义全局变量的文件:

#Globals.py--
def init():
    global XYZ
    XYZ='Some Variable'
    print("GLobal Variables initialized Successfully ")

这是试图访问 'XYZ' 全局变量的 udf 函数

import Globals

#udfs.py
def trans_thrp_cd():
    try:
        global xyz
        print(xyz)
    except Exception as e:
        print("Error in fetching value from the globals "+ str(e))
#main.py
import Globals
spark and other modules import-initialization
register functions as pyspark-hive UDFs

df=hive_context.sql("select trans_thrp_cd from test.people")
df.show()

得到下面提到的错误:

#Error
module 'Globals' has no attribute 'XYZ'

【问题讨论】:

【参考方案1】:

在 Globals.py 中:

global XYZ
XYZ = 'Some variable'

在udfs.py中:

import Globals
print(Globals.XYZ)

【讨论】:

感谢您的意见。由于我使用 pyspark-sql 来使用这个 UDF,所以我仍然面临这个问题。

以上是关于我创建了一个文件来访问所有全局变量。我无法访问 pyspark-sql 查询中定义的 UDF 中的全局变量的主要内容,如果未能解决你的问题,请参考以下文章

不引用全局打字稿就无法直接访问全局变量

python多处理子进程无法访问全局变量

在 .vue 文件中访问全局 sass 变量和引导程序

如何在javascript中访问当前范围之外的变量?

在CakePHP中创建全局变量的最佳方法是什么?

访问头文件 C++ 中声明的向量(非全局)