无法使用匿名列上的pyspark.sql.functions中的排序功能

时间:2019-05-20 22:33:01

标签: python apache-spark pyspark py4j

我正在从事一个涉及使用pyspark的项目。但是,在使用某些功能时遇到py4j错误。即:ascdesc及其所有变体。要进行复制,请先运行SaprkSession,然后运行以下命令:

from pyspark import functions as funcs

funcs.asc(funcs.col("foo"))

我收到以下错误:

Py4JError: An error occurred while calling z:org.apache.spark.sql.functions.asc. Trace:
py4j.Py4JException: Method asc([class org.apache.spark.sql.Column]) does not exist
    at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:318)
    at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:339)
    at py4j.Gateway.invoke(Gateway.java:276)
    at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
    at py4j.commands.CallCommand.execute(CallCommand.java:79)
    at py4j.GatewayConnection.run(GatewayConnection.java:238)
    at java.base/java.lang.Thread.run(Thread.java:834)

以下方法工作正常,但是:funcs.col("foo").asc()。我认为这是一个错误?还是我只是错误地使用了functions模块?其他功能(sinminstddev等)也可以正常工作。排序功能似乎是唯一有问题的功能。

版本信息:

  • MacOS:10.13.6
  • Python:3.7.3
  • pyspark:2.4.3
  • py4j:0.10.7

更新:排序功能不适用于数据框的显式列,或者:

import pandas as pd

df = spark.createDataFrame(
    pd.DataFrame({
        "a": [1, 2, 3],
        "b": ["a", "b", "c"]
    })
)
funcs.asc(df["a"])

这会导致相同的错误。

0 个答案:

没有答案