Я начинаю новый с pyspark, поэтому, пожалуйста, потерпите меня. Пытаюсь найти лучший способ написания кода. Я не смог найти ответ на этот вопрос. Из кода, который я видел, я вижу 2 основных способа создания спарк-сессии.
Approach1: определите файл «spark.py» с помощью метода startpark, где вы определяете сеанс, а затем используете его в «main.py» - public git repo - https://github.com/AlexIoannides/pyspark-example-project
Approach2: определите класс клиента spark с сеансом spark, а затем создайте его экземпляр в главном.
Код подхода 1:
https://github.com/AlexIoannides/pyspark-example-project
Код подхода 2:
class sparkClient:
def __init__(self,threshold,warning_errors,API_VERSION,PAGE_SIZE):
spark = SparkSession.builder.appName("myapp").config("xxxxx", os.path.realpath(os.path.join(os.path.dirname(__file__), os.pardir, "spark-warehouse"))).enableHiveSupport().getOrCreate()
spark.conf.set("spark.hadoop.mapred.output.compress", "true")
spark.conf.set("spark.hadoop.mapred.output.compression.codec",\
"true")
def main():
pass
if __name__ == "__main__":
spark_Client = sparkClient(threshold,warning_errors,API_VERSION,PAGE_SIZE)
spark_session = spark_Client.spark_session
.....
- Я пытаюсь понять, как исполнение отличается в описанных выше подходах.
- Повторно ли используется искровой контекст. Предположим, вы используете один искровой кластер, но выпускаете несколько экземпляров этого кода с разными конфигами.