【发布时间】:2022-01-26 03:55:10
【问题描述】:
我有一个名为 good_df 的 DataFrame,它具有混合类型的列。我正在尝试为StringType 的列将任何空值设置为'null'。我认为下面的代码会起作用,但事实并非如此。
self.good_df = self.good_df.select([when((col(c)=='') & (isinstance(self.good_df.schema[c].dataType, StringType)),'null').otherwise(col(c)).alias(c) for c in self.good_df.columns])
我正在查看错误消息,但它并没有给我太多线索:
Traceback(最近一次调用最后一次):文件“”,第 1 行,in 文件 “/usr/lib/python2.7/site-packages/pyspark/sql/column.py”,第 116 行,在 _ njc = getattr(self._jc, name)(jc) 文件“/usr/lib/python2.7/site-packages/py4j/java_gateway.py”,第 1257 行,在 call answer, self.gateway_client, self.target_id, self.name) 文件“/usr/lib/python2.7/site-packages/pyspark/sql/utils.py”,第 63 行,在 deco 返回 f(*a, **kw) 文件 “/usr/lib/python2.7/site-packages/py4j/protocol.py”,第 332 行,在 get_return_value 格式(target_id, ".", name, value)) Py4JError: An 调用 o792.and 时发生错误。跟踪:py4j.Py4JException: 方法 and([class java.lang.Boolean]) 不存在于 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)
有人对正在发生的事情有任何想法吗? 谢谢!
【问题讨论】:
标签: python apache-spark pyspark apache-spark-sql