問題: 構成設定を追加すると、既定の spark.executor.extraJavaOptions 設定がすべて上書きされるProblem: Adding a Configuration Setting Overwrites All Default spark.executor.extraJavaOptions Settings

問題点Problem

Apache Spark Configテキスト領域に入力して構成設定を追加すると、新しい設定は追加されるのではなく、既存の設定を置き換えます。When you add a configuration setting by entering it in the Apache Spark Config text area, the new setting replaces existing settings instead of being appended.

VersionVersion

Databricks Runtime 5.1 以下を参照してください。Databricks Runtime 5.1 and below.

原因Cause

クラスターが再起動すると 、クラスターはクラスター UI で作成された構成ファイルから設定を読み取り、既定の設定を上書きします。When the cluster restarts, the cluster reads settings from a configuration file that is created in the Clusters UI, and overwrites the default settings.

たとえば、次の extraJavaOptionsSpark Configテキスト領域に追加するとします。For example, when you add the following extraJavaOptions to the Spark Config text area:

spark.executor.extraJavaOptions -
javaagent:/opt/prometheus_jmx_exporter/jmx_prometheus_javaagent.jar=9404:/opt/prometheus
_jmx_exporter/jmx_prometheus_javaagent.yml

次に、 SPARK UI > 環境 > Spark プロパティspark.executor.extraJavaOptions の下に、新しく追加された構成設定のみが次のように表示されます。Then, in Spark UI > Environment > Spark Properties under spark.executor.extraJavaOptions, only the newly added configuration setting shows:

-javaagent:/opt/prometheus_jmx_exporter/jmx_prometheus_javaagent.jar=9404:/opt/prometheus
_jmx_exporter/jmx_prometheus_javaagent.yml

既存の設定はすべて削除されます。Any existing settings are removed.

参照用に、既定の設定は次のとおりです。For reference, the default settings are:

-Djava.io.tmpdir=/local_disk0/tmp -XX:ReservedCodeCacheSize=256m -
XX:+UseCodeCacheFlushing -Ddatabricks.serviceName=spark-executor-1 -
Djava.security.properties=/databricks/spark/dbconf/java/extra.security -XX:+PrintFlagsFinal -
XX:+PrintGCDateStamps -verbose:gc -XX:+PrintGCDetails -Xss4m -
Djavax.xml.datatype.DatatypeFactory=com.sun.org.apache.xerces.internal.jaxp.datatype.Dataty
peFactoryImpl -
Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.Documen
tBuilderFactoryImpl -
Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFact
oryImpl -
Djavax.xml.validation.SchemaFactory=https://www.w3.org/2001/XMLSchema=com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory -
Dorg.xml.sax.driver=com.sun.org.apache.xerces.internal.parsers.SAXParser -
Dorg.w3c.dom.DOMImplementationSourceList=com.sun.org.apache.xerces.internal.dom.DOMX
SImplementationSourceImpl

ソリューションSolution

既定の設定を失わずに spark.executor.extraJavaOptions に新しい構成設定を追加するには、次のようにします。To add a new configuration setting to spark.executor.extraJavaOptions without losing the default settings:

  1. Spark のUI > 環境 > spark のプロパティで、spark.executor.extraJavaOptions に既定で設定されているすべてのプロパティを選択してコピーします。In Spark UI > Environment > Spark Properties, select and copy all of the properties set by default for spark.executor.extraJavaOptions.
  2. [編集] をクリックします。Click Edit.
  3. Spark Configテキスト領域 (クラスター > クラスター名 > 詳細オプション > Spark) で、既定の設定を貼り付けます。In the Spark Config text area (Clusters > cluster-name > Advanced Options > Spark), paste the default settings.
  4. 新しい構成設定を既定の設定の下に追加します。Append the new configuration setting below the default settings.
  5. テキスト領域の外側をクリックし、 [確認] をクリックします。Click outside the text area, then click Confirm.
  6. クラスターを再起動します。Restart the cluster.

たとえば、次の設定をSpark Configテキスト領域に貼り付けるとします。For example, let’s say you paste the following settings into the Spark Config text area. 新しい構成設定が既定の設定に追加されます。The new configuration setting is appended to the default settings.

spark.executor.extraJavaOptions = -Djava.io.tmpdir=/local_disk0/tmp -
XX:ReservedCodeCacheSize=256m -XX:+UseCodeCacheFlushing -Ddatabricks.serviceName=spark-
executor-1 -Djava.security.properties=/databricks/spark/dbconf/java/extra.security -
XX:+PrintFlagsFinal -XX:+PrintGCDateStamps -verbose:gc -XX:+PrintGCDetails -Xss4m -
Djavax.xml.datatype.DatatypeFactory=com.sun.org.apache.xerces.internal.jaxp.datatype.Dataty
peFactoryImpl -
Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentB
uilderFactoryImpl -
Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactor
yImpl -
Djavax.xml.validation.SchemaFactory:https://www.w3.org/2001/XMLSchema=com.sun.org.apache.xer
ces.internal.jaxp.validation.XMLSchemaFactory -
Dorg.xml.sax.driver=com.sun.org.apache.xerces.internal.parsers.SAXParser -
Dorg.w3c.dom.DOMImplementationSourceList=com.sun.org.apache.xerces.internal.dom.DOMXSImplem
entationSourceImpl -
javaagent:/opt/prometheus_jmx_exporter/jmx_prometheus_javaagent.jar=9404:/opt/prometheus_jm
x_exporter/jmx_prometheus_javaagent.yml

クラスターを再起動すると、既定の設定と新しく追加された構成設定が spark UI > 環境 > spark のプロパティに表示されます。After you restart the cluster, the default settings and newly added configuration setting appear in Spark UI > Environment > Spark Properties.