java.lang.Exception: spark.executor.extraJavaOptions is not allowed to set Spark options (was '-Dfile.encoding=UTF-8 -Dhdp.version=current -Dlog4j.configuration=spark-executor-log4j-default.properties -Dlog4j.debug -Dkylin.hdfs.working.dir=hdfs://node-a4:9000/kylin/kylin_metadata/ -Dkylin.metadata.identifier=kylin_metadata -Dkylin.spark.category=job -Dkylin.spark.project=learn_kylin -Dkylin.spark.identifier=c9ec57fe-1c28-4522-a1d7-4d2bb50389ec -Dkylin.spark.jobName=c9ec57fe-1c28-4522-a1d7-4d2bb50389ec-01 -Duser.timezone=Asia/Shanghai -Djava.security.auth.login.config=/alidata2/server/spark-3.1.3-bin-hadoop3.2/conf/jaas.conf -Djava.security.krb5.conf=/etc/krb5.conf -Djavax.security.auth.useSubjectCredsOnly=false -Dspark.hadoop.hadoop.security.authentication=kerberos -Dspark.kerberos.enabled=true -Dspark.kerberos.principal=spark/_HOST@cp.com -Dspark.kerberos.keytab=/etc/security/keytab/spark.keytab'). Set them directly on a SparkConf or in a properties file when using ./bin/spark-submit.
这个错误提示意味着在 Apache Kylin 中,你不能通过 spark.executor.extraJavaOptions
来设置 Spark 配置选项。对于 Spark 的配置,最好直接在 spark-submit
提交时或者在 SparkConf 中设置。
你可以在 spark-submit
脚本中使用 --conf
参数来添加需要的配置。例如:
./bin/spark-submit --conf "spark.executor.extraJavaOptions=-Djava.security.auth.login.config=/alidata2/server/spark-3.1.3-bin-hadoop3.2/conf/jaas.conf -Djava.security.krb5.conf=/etc/krb5.conf -Djavax.security.auth.useSubjectCredsOnly=false" --conf "spark.hadoop.hadoop.security.authentication=kerberos" --conf "spark.kerberos.enabled=true" --conf "spark.kerberos.principal=spark/_HOST@cp.com" --conf "spark.kerberos.keytab=/etc/security/keytab/spark.keytab"
注意,以上命令行参数中的路径值和主体名称应根据你的实际环境进行替换。
另外,如果你在编程过程中创建了一个 SparkContext 或者 SparkSession 对象,可以使用 SparkConf
对象来设置这些参数,示例如下:
SparkConf conf = new SparkConf()
.set("spark.executor.extraJavaOptions", "-Djava.security.auth.login.config=/path/to/jaas.conf -Djava.security.krb5.conf=/path/to/krb5.conf -Djavax.security.auth.useSubjectCredsOnly=false")
.set("spark.hadoop.hadoop.security.authentication", "kerberos")
.set("spark.kerberos.enabled", "true")
.set("spark.kerberos.principal", "spark/_HOST@domain.com")
.set("spark.kerberos.keytab", "/path/to/keytab");
SparkContext sc = new SparkContext(conf);
请注意,这是使用 Java API 的示例,如果你使用的是 Scala 或者 Python,方法可能会有所不同,但总体思路是一样的。在代码中,应该替换 /path/to/
和 spark/_HOST@domain.com
为你的