python-3.x - 如何在 PySpark 中注册本机类或函数?
问题描述
我最近一直在做 PySpark,读完这篇博文后,我想到了一个问题
https://mungingdata.com/apache-spark/registerfunction-injectfunction/
有没有办法在 Python 中做到这一点?例如,我想有一堂课,比如
MyClass(??):
"""
A PySpark Class
"""
return self.read.load(path/to/file)
<somecode here to register it>
然后,从我的火花会话中,我想做类似的事情
myDf = spark.MyClass()
这在 PySpark 中可能吗?
主要动机是以某种方式围绕 PySpark 进行包装,以提供特定的增强功能。
解决方案
你在 python 中工作,所以我不太明白是什么阻碍了你。
这是一个代码示例,用于以某种方式执行您想做的事情:
from pyspark.sql import SparkSession
class Singleton(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
return cls._instances[cls]
class Spark(metaclass=Singleton):
def __init__(self):
self._spark = (
SparkSession.builder.master("yarn").appName(app_name).getOrCreate()
)
def __getattr__(self, attr):
return getattr(self._spark, attr)
# Add any other method you'd like
推荐阅读
- javascript - 如何使用 mongoose 从 mongodb 创建嵌套层次结构数据
- python - MatPlotLib 将饼图添加到表的末尾
- javascript - Alertify 和 bootstrap 4 模式之间的 tabindex 冲突
- snowflake-cloud-data-platform - 使用 DBeaver 未从雪花返回数据
- node.js - 将 web3 应用程序部署到 heroku 时找不到 node-gyp-build
- python - 我正在尝试用 pyglet 制作蛇,但我无法让蛇正确转动
- git - 我该如何解决这个无法远程将参考推送到 section.io 拉取所需的代理图像
- firebird - 文件的“CreateFile(打开)”操作期间的 FirebirdSql 数据客户端 I/O 错误
- python - 下载bz2,读取内存中的压缩文件(避免内存溢出)
- python - Django:如何验证 AbstractBaseUser?