我正在尝试为我的Pyspark转换扩展Optimus用例。
然而,我偶然发现下面的.add_columns()方法没有继承我的Pyspark dataframe方法,而.add_columns_2()方法继承了集成开发环境级别的方法。
为什么我不能在赋值后列出与Pyspark dataframe相关的方法?
class OptExtender:
def __init__(self, df):
self._df = df
def add_columns(self, column):
self._df ## ==> This shows the methods related to pyspark dataframe methods
self._df = self._df.withColumn(column, lit('Hello'))
self._df ## ==> This doesn't list the Pyspark dataframe methods
return self
def add_columns_2(self, column):
self._df ## ==> This shows the methods related to pyspark dataframe methods
def add_columns(column):
self._df = self._df.withColumn(column, lit('Hello'))
self._df ## ==> This shows the Pyspark dataframe methods
return self发布于 2020-02-07 03:14:46
它不工作听起来很奇怪,因为.withColumn()返回一个Dataframe对象,看看源code。
您可以尝试执行以下操作,显式声明_df属性的类型:
from pyspark.sql import Dataframe
class OptExtender:
def __init__(self, df):
self._df: Dataframe = df
def add_columns(self, column):
self._df = self._df.withColumn(column, lit('Hello'))
self._df ## ==> Now it should work
return self._dfhttps://stackoverflow.com/questions/59055519
复制相似问题