【问题标题】:Python: Extend class method and use the substituted in instance of the classPython:扩展类方法并使用类的替换实例
【发布时间】:2020-06-16 18:20:20
【问题描述】:

我想扩展 pyspark.sql.DataFrame 的读/写功能以满足我自己的项目需求。为此,我创建了以下内容

import pyspark.sql

class DataFrame(pyspark.sql.DataFrame):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

    def write(self, format="parquet", version=True):
        if format=="some_format":
            # do something
            super().write.format(format).save(path)

麻烦的是在代码中我们像这样实例化超类对象data = spark.range(0, 5) 如何将 spark Dataframe 转换为具有最小更改的自定义读/写方法。这可能吗

【问题讨论】:

    标签: python pyspark overriding super pyspark-dataframes


    【解决方案1】:

    您可以像这样更改现有对象的类:

    data = spark.range(0, 5)
    data.__class__ = DataFrame   # _your_ DataFrame
    

    对于父类的直接扩展,这个应该可以正常工作。一般来说,有各种各样的caveats 来攻击这样的类成员;例如,您自己的初始化程序尚未在此变量上调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 1970-01-01
      相关资源
      最近更新 更多