应用于超过1000列的Pyspark UDF在spark 1.6.2中失败

时间:2018-02-24 07:56:55

标签: apache-spark pyspark

我有一个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异常。

请让我知道如何解决这个问题。

0 个答案:

没有答案