在下一个示例中,为什么下层函数不接受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()
+----+------------+ |name|length(name)| +----+------------+ | Tom| 3| +----+------------+ Py4JError: An error occurred while calling z:org.apache.spark.sql.functions.lower. Trace: py4j.Py4JException: Method lower([class java.lang.String]) does not exist ....
在文档pyspark.sql.length中,说接受一列作为参数,而pyspark.sql.lower中说。为什么不接受“姓名”?
如果我换
df.select (df.name, func.lower(func.col('name'))).show()
运行正常
+----+-----------+ |name|lower(name)| +----+-----------+ | Tom| tom| +----+-----------+
有人可以解释我为什么吗?
提前谢谢。
答案 0 :(得分:1)
我有同样的问题。在谷歌搜索时,我着手解决以下问题:https://issues.apache.org/jira/browse/SPARK-22212。
这似乎是一个错误(较小),解决方法似乎是您实际执行的操作。
希望这会有所帮助。