我有一个pyspark查找UDF,基本上将True转换为1,将False转换为0。 以下是我的代码:
binary_dict = {"True": 1, "False": 0 }
broadcastVar = sc.broadcast(binary_dict)
def lookup(x):
if broadcastVar.value.get(x) is None:
return x
else:
return broadcastVar.value.get(x)
mycolumnList = 920 columns
Df.columns = 944 columns
dF1 = dF.select(*(lookup_udf(col(c)).alias(c) if c in mycolumnList else c for c in Df.columns))
dF1.take(100)
Error:
java.lang.UnsupportedOperationException: Cannot evaluate expression:
PythonUDF#lookup(input[111, StringType])
这是我到目前为止所尝试的: (1)当我在mycolumnList中只有100列时,我没有看到发生这种异常。 (2)当mycolumnList中的列数大于100时,我会看到python UDF异常。
请让我知道如何解决这个问题。