#python-3.x #apache-spark #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>
а затем, после моего сеанса spark, я хотел бы сделать что-то вроде
myDf = spark.MyClass()
возможно ли это в Пыспарке?
Основная мотивация-иметь обертку вокруг PySpark, чтобы каким-то образом обеспечить определенные расширенные функции.
Комментарии:
1. что вас сейчас блокирует ? вы пробовали что-то, и это не помогает ? или вы просто просите общих советов ?
Ответ №1:
Вы работаете на 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