【发布时间】:2019-02-24 12:17:26
【问题描述】:
import pyspark.sql.functions as f
df_categories4 = df_categories3.select("alias", "title",
f.when(df_categories.parents == 0).otherwise(df_categories3.parents[0])).show()
它显示 when() 缺少 1 个必需的位置参数:'value' 的错误。但是如果我在 '0' 之后放置一个值,则表示存在无法解决的错误。
我将如何解决这个问题?
谢谢。
原始错误:
TypeError: when() missing 1 required positional argument: 'value'
输入 0 后的值后出错:
AnalysisException: "cannot resolve '(`parents` = 0)' due to data type mismatch:
differing types in '(`parents` = 0)' (array<string> and int).;;\n'Project
[alias#226, title#230, CASE WHEN (parents#229 = 0) THEN 1 ELSE parents#229[0]
END AS CASE WHEN (parents = 0) THEN 1 ELSE parents[0] END#1079]\n+-
AnalysisBarrier\n +- Filter ((array_contains(country_whitelist#228, US) ||
array_contains(country_whitelist#228, CA)) || isnull(country_whitelist#228))\n
+- Filter (NOT (array_contains(country_blacklist#227, US) &&
array_contains(country_blacklist#227, CA)) || isnull(country_blacklist#227))\n
+-
关系[alias#226,country_blacklist#227,country_whitelist#228,parents#229,title#230] json\n"
【问题讨论】:
-
当您在 0 之后放置一个值时,实际错误是什么?
-
加0是什么意思?喜欢在 0 之后添加另一个值?
-
最好是展示实际发生的事情,而不是描述它。
-
我刚刚附上了错误消息的照片,在 0 之后添加了一个值
-
when 需要一个值,如果我没记错的话,如果满足条件,应该使用该值。例如
when(df_categories.parents == 0, SOME_VALUE).otherwise(...)
标签: python database apache-spark pyspark bigdata