在 Pyspark 中执行 Python 函数生成的变量
Execute Variable Generated by Python Function in Pyspark
我开发了一个通用的 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 变量。
你能帮忙吗!
可以使用两个选项 exec(df) 或 eval(df) 来获得输出 result/dataframe,如下图:
df = generic_func(PARAMETERS)
result = eval(df)
result.show()
我开发了一个通用的 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 变量。
你能帮忙吗!
可以使用两个选项 exec(df) 或 eval(df) 来获得输出 result/dataframe,如下图:
df = generic_func(PARAMETERS)
result = eval(df)
result.show()