当前位置: 首页 > 知识库问答 >
问题:

PySpark或方法异常

公良光熙
2023-03-14

我正试图修改PySpark dataframe中的列值,如下所示:

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

这将生成以下异常:

调用O435时出错。跟踪:py4j.py4jException:Method或([class java.lang.string])在py4j.reflection.reflectionEngine.getMethod(reflectionEngine.java:318)在py4j.reflection.reflectionEngine.java:326)在py4j.gateway.invoke(gateway.java:274)在py4j.commands.abstractCommand.invokeMethod(reflectionEngine.java:274)在748)

回溯(最近的调用为last):文件“/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/column.py”,第115行,在_njc=getattr(self._jc,name)(jc)文件“/usr/lib/spark/python/lib/pyspark/sql/column.py”,第1257行,在call answer,self.gateway_client,self.target_id,self.name)文件“,**kw)文件”/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py“,第332行,格式为get_return_value(target_id,”.“,name,value))py4j.protocol.py4jerro:调用O435时发生错误。或.trace:py4j.py4jException:Method或([class java.lang.string])在Ay.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)

共有1个答案

缑嘉玉
2023-03-14

你只是少了几个括号。尝试:

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

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

 类似资料:
  • 我正在尝试使用pyspark学习以下hello word级别的示例,例如下面的示例。我得到了一个“MethodisBarrier([])不存在”错误,代码下面包含了完整的错误。 尽管如此,当我在命令行中直接启动pyspark会话并键入相同的代码时,它工作得很好: 我的设置: windows 10 Pro x64

  • 我对异步方法有一个奇怪的问题。如果我以异步方式运行它并且它的作业抛出一些特定的异常,它不会显示它并简单地停止执行(没有捕获,没有日志)。 我发现它可以使用jasperreport。这是故障块代码: 如果此代码位于异步注释方法内,则不会引发异常,也不会记录(只是停止执行)。如果删除异步注释,它会抛出以下内容: 我的问题不是异常本身,而是为什么异步方法抓不到它?

  • 下面是这本书的一段话: 覆盖方法不得抛出比覆盖方法声明的异常新的或更广泛的检查异常。例如,声明FileNotFoundException的方法不能被声明SQLException、Exception或任何其他非运行时异常的方法覆盖,除非它是FileNotFoundException的子类。 现在我的问题是,如果超类中的方法抛出一个异常,那么重写方法能否根本不抛出一个异常? 因为我刚刚在Java中尝试

  • 我是Groovy新手,但我正在尝试编写一个简单的递归方法来将层次路径解析为对象图。以下是我尝试过的: 但我得到以下错误: 我错过了什么?

  • 我正在使用Spring JDBCTemboard访问数据库中的数据,它工作正常。但是FindBugs在我的代码片段中指出了一个小问题。 代码: FindBugs问题: 方法可能无法清理流或资源的检查异常在这一行 有人能告诉我这到底是什么吗?我们如何解决这个问题? 我们将不胜感激:)