【发布时间】:2021-03-10 22:38:10
【问题描述】:
我开发了一个通用的 python 函数,它生成一个我想在 spark 中执行的变量,以便获得所需的 Dataframe,详细信息如下(假设我直接使用 pyspark shell):
#This is pyspark shell in cloudera platform
#Python Function
def generic_func(PARAMETERS):
#Some operations
return String_VARIABLE_To_Be_Executed
#Calling the function
df = generic_func(PARAMETERS)
exec(df)
但似乎 spark 仍在将其作为字符串变量读取,因为当我执行以下代码时出现错误:
df.show()
我收到以下错误:
AttributeError: 'str' object has no attribute 'show'
只是为了给你一些上下文,通过启动:
df
变量生成如下内容:
"accountDF.alias('L1').join(account.alias('L2'), f.col('L1.MEMBERNAME') == f.col('L2.PARENT_NAME'), how='left')"
变量的输出比这更复杂,这里只是告诉你变量有一些spark函数需要执行。
type(df)
<type 'str'>
我们的观点是执行这个变量,就像我们正在执行任何 pyspark 数据帧函数一样。换句话说,我们想把这个字符串变量变成一个可执行的 pyspark 变量。
你能帮忙吗!
【问题讨论】:
-
能否附上通用函数的确切代码。我怀疑返回值是字符串类型,可以通过type(df)确认更新
-
是的,它是我上面指定的字符串,请检查更新!有没有办法将此字符串转换为可执行的 spark 变量?
-
@SudipM 我没听错你的问题吗?
标签: python python-3.x apache-spark pyspark user-defined-functions