【问题标题】:Azure Synapse Apache Spark : Pipeline level spark configurationAzure Synapse Apache Spark:管道级火花配置
【发布时间】:2022-01-22 20:04:33
【问题描述】:

尝试为整个 azure synapse 管道配置 spark,发现 Spark session config magic commandHow to set Spark / Pyspark custom configs in Synapse Workspace spark pool%%configuremagic 命令适用于单个笔记本。示例:

在笔记本开头插入包含以下内容的单元格

%%configure -f
{
    "driverMemory": "28g",
    "driverCores": 4,
    "executorMemory": "32g",
    "executorCores": 4,
    "numExecutors" : 5
}

然后下面会发出期望值。

spark_executor_instances = spark.conf.get("spark.executor.instances")
print(f"spark.executor.instances {spark_executor_instances}")

spark_executor_memory = spark.conf.get("spark.executor.memory")
print(f"spark.executor.memory {spark_executor_memory}")

spark_driver_memory = spark.conf.get("spark.driver.memory")
print(f"spark.driver.memory {spark_driver_memory}")

虽然如果我将该笔记本添加为 Azure Synapse 管道中的第一个活动,会发生什么情况是执行该笔记本的 Apache Spark 应用程序具有正确的配置,但管道中的其余笔记本回退到默认配置。

如何为整个管道配置 spark ?我应该在管道中的每个笔记本中复制%%configure .. 上方的粘贴还是有更好的方法?

【问题讨论】:

  • 如果您希望整个管道的配置相同,为什么不将其设为默认配置,这样您就不需要额外的配置单元。仅当您希望它对任何边缘或特定情况有所不同时,才应使用此 %%configure
  • @NikunjKakadiya 感谢您的回复。好吧,1)直接将配置文件上传到 Spark Pool 似乎不起作用,因为正如上面链接的文章所说,Azure Synapse 用默认配置覆盖了其中一些配置。 2)我想说一个管道的一种配置和另一个管道的另一种配置。你知道如何实现吗?

标签: apache-spark pyspark azure-synapse


【解决方案1】:

是的,这是众所周知的选项 AFAIK。您需要在每个 Notebook 的开头定义 %%configure -f 以覆盖您的作业的默认设置。

或者,您可以尝试遍历 Azure 门户上的 Spark 池,并通过上传如下所示的文本文件来设置 Spark 池中的配置:

更多详情请参考third-party article

此外,似乎不能为执行程序指定少于 4 个内核,也不能为驱动程序指定少于 4 个内核。如果这样做,您将获得 1 个核心,但仍保留 4 个核心。

【讨论】:

  • 是的,虽然But in the Synapse spark pool, few of these user-defined configurations get overridden by the default value of the Spark pool..
  • 由于这个问题,您需要在所有笔记本中定义%%configure -f
  • 是的,虽然看起来您不能为执行程序指定少于 4 个内核,也不能为驱动程序指定少于 4 个内核。如果这样做,您将获得 1 个核心,但仍保留 4 个核心
  • 哦。感谢您添加这一宝贵的观点,我将在答案中更新这一点。如果您发现给定的答案有用,请接受它作为答案(点击答案左侧的复选标记)以帮助其他社区成员
猜你喜欢
  • 2022-12-02
  • 2021-12-02
  • 2023-01-22
  • 2021-07-25
  • 2019-07-30
  • 1970-01-01
  • 2021-10-25
  • 2019-02-06
  • 1970-01-01
相关资源
最近更新 更多