【问题标题】:PySpark OR method exceptionPySpark OR 方法异常
【发布时间】:2021-02-06 01:50:45
【问题描述】:

我正在尝试修改 PySpark 数据框中的列值,如下所示:

df_cleaned = df_cleaned.withColumn('brand_c', when(df_cleaned['brand'] == "samsung" |\
                                                   df_cleaned['brand'] == "oppo", df_cleaned.brand)\
                                   .otherwise('others'))

这会产生以下异常:

调用 o435.or 时出错。跟踪:py4j.Py4JException: 方法 or([class java.lang.String]) 不存在于 py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:318) 在 py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:326) 在 py4j.Gateway.invoke(Gateway.java:274) 在 py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) 在 py4j.commands.CallCommand.execute(CallCommand.java:79) 在 py4j.GatewayConnection.run(GatewayConnection.java:238) 在 java.lang.Thread.run(Thread.java:748)

Traceback(最近一次调用最后一次):文件 “/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/column.py”,行 115,在_ njc = getattr(self._jc, name)(jc) 文件“/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py”, 第 1257 行,在 调用 答案,self.gateway_client,self.target_id,self.name)文件“/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/utils.py”,第 63 行, 在装饰中 返回 f(*a, **kw) 文件“/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py”,行 332,在get_return_value中 format(target_id, ".", name, value)) py4j.protocol.Py4JError: 调用 o435.or 时出错。跟踪:py4j.Py4JException: 方法 or([class java.lang.String]) 不存在于 py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:318) 在 py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:326) 在 py4j.Gateway.invoke(Gateway.java:274) 在 py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) 在 py4j.commands.CallCommand.execute(CallCommand.java:79) 在 py4j.GatewayConnection.run(GatewayConnection.java:238) 在 java.lang.Thread.run(Thread.java:748)

【问题讨论】:

    标签: pyspark


    【解决方案1】:

    您只是缺少几个括号。试试:

    df_cleaned = df.withColumn('brand_c', when((df['Product'] == "apple") |\
                    (df['Product'] == "oppo"), df.User).otherwise('others'))
    

    在 pyspark 中使用比较运算符时始终使用括号。

    【讨论】:

      猜你喜欢
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-23
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      • 2022-01-20
      相关资源
      最近更新 更多