apache-spark - 要创建多少个 Spark session ?

标签 apache-spark pyspark

我们正在 pyspark 中构建数据摄取框架。
第一步是使用我们的应用程序名称获取/创建一个 sparksession。 dataLoader.py 的结构概述如下。

spark = SparkSession \
            .builder \
            .appName('POC') \
            .enableHiveSupport() \
            .getOrCreate()
 #create data frame from file
 #process file 

如果我必须同时执行这个 dataLoader.py 来加载不同的文件,相同的 spark session 会导致问题吗?
我是否必须为每次摄取创建单独的 Spark session ?

最佳答案

不,您不会创建多个 spark session 。每个 Spark 应用程序只应创建一次 Spark session 。 Spark 不支持此功能,如果您在同一个 Spark 作业中使用多个 Spark session ,您的作业可能会失败。这是SPARK-2243 spark关闭了票证说它不会修复它的地方。

如果你想使用 dataLoader.py 加载不同的文件有2个选项

  • 按顺序加载和处理文件。在这里一次加载一个文件;将其保存到数据帧并处理该数据帧。
  • 创建不同 dataLoader.py不同文件的脚本并并行运行每个 Spark 作业。在这里,每个 spark 作业都有自己的 sparkSession。
  • 关于apache-spark - 要创建多少个 Spark session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52410267/

    相关文章:

    scala - 使用Spark Databricks平台从URL读取数据

    scala - java.lang.NoClassDefFoundError : org/apache/spark/deploy/SparkSubmit

    apache-spark - 仅保留 DataFrame 中有关某些字段的重复项

    pyspark - 基于另一个数据帧 Pyspark 1.6.1 中匹配值的子集数据帧

    pyspark - 如何使用 pyspark graphframe pregel API 实现循环检测

    python - pyspark.ml 管道 : are custom transformers necessary for basic preprocessing tasks?

    java - 由于错误而无法读取文本文件

    python - 在同一调用中从 Spark Dataframes split 方法中选择数组元素?

    java - Spark : Task not serializable Exception in forEach loop in Java

    python - 使用 Databricks 处理大量 JSON (~12TB)