如何自定义 Amazon EMR 笔记本中的 Apache Spark 作业的配置?
简短描述
Amazon EMR 笔记本是一种无服务器 Jupyter 笔记本。Jupyter 笔记本使用 Sparkmagic 内核作为客户端,通过 Apache Livy 服务器以交互方式使用远程 EMR 集群中的 Spark。您可以使用 Sparkmagic 命令自定义 Spark 配置。当您希望执行以下操作时,自定义配置非常有用:
- 更改 Spark 作业的执行程序内存和执行程序内核
- 更改 Spark 的资源分配
解决方法
修改当前会话
1. 在 Jupyter 笔记本单元格中,运行 %%configure 命令以修改作业配置。在以下示例中,该命令将更改 Spark 作业的执行程序内存。
%%configure -f
{"executorMemory":"4G"}
2. 对于您通常利用 --conf 选项传递的其他配置,可使用嵌套 JSON 对象,如下例中所示。使用此方法,而不是明确地将 conf 对象传递到 SparkContext 或 SparkSession。
%%configure -f
{"conf":{"spark.dynamicAllocation.enabled":"false"}}
确认配置更改已成功
1. 在客户端,从 Jupyter 上运行 %%info 命令以查看当前会话配置。示例输出:
Current session configs: {'executorMemory': '4G', 'conf': {'spark.dynamicAllocation.enabled': 'false'}, 'kind': 'pyspark'}
2. 在服务器端,请检查 EMR 群集上的 /var/log/livy/livy-livy-server.out log。如果 SparkSession 已启动,您应看到如下日志条目:
20/06/24 10:11:22 INFO InteractiveSession$: Creating Interactive session 2: [owner: null, request: [kind: pyspark, proxyUser: None, executorMemory: 4G, conf: spark.dynamicAllocation.enabled -> false, heartbeatTimeoutInSecond: 0]]
相关信息
Apache Livy - REST API