为什么在下一个示例中,下层函数不接受col名称作为文字,而长度接受呢?
import pyspark.sql.functions as func
df = spark.createDataFrame([('Tom', 80)], ["name", "height"])
df.select (df.name, func.length('name')).show()
df.select (df.name, func.lower('name')).show()
+ ---- + ------------ +|名称|长度(名称)|+ ---- + ------------ +|汤姆| 3 |+ ---- + ------------ +Py4JError:调用z:org.apache.spark.sql.functions.lower时发生错误。跟踪:py4j.Py4JException:方法Lower([class java.lang.String])不存在....
在文档中pyspark.sql.length表示接受列作为参数,而pyspark.sql.lower表示相同。为什么不接受“名称”?
如果我更改为
df.select (df.name, func.lower(func.col('name'))).show()
运行正常
+ ---- + ----------- +|名称|下部(名称)|+ ---- + ----------- +|汤姆|汤姆|+ ---- + ----------- +
有人可以解释我为什么吗?
预先感谢。
我有同样的问题。在谷歌搜索时,我着手解决这个问题:https://issues.apache.org/jira/browse/SPARK-22212。
这似乎是一个错误(较小),解决方法似乎是您实际执行的操作。
希望这会有所帮助。