ALL,
update
Я пытаюсь выполнить код java из искры, передав аргумент (аргумент будет иметь значение, разделенное пробелом). например,
arg4 = "country='USA' AND state='Newyork'"
мой код будет таким:
spark-submit --jars <path>/spark-sql-kafka-0-10_2.11-2.3.0.jar \
--driver-java-options "-Djava.security.auth.login.config=<path>/devjaas.conf" \
--conf "spark.executor.extraJavaOptions=-Djava.security.auth.login.config=./jaas_hdfs_dev.conf" \
--master yarn \
--deploy-mode client \
--files <path>/jaas_hdfs_dev.conf,<credential> \
--executor-memory 10g \
--executor-cores 5 \
--driver-cores=5 \
--driver-memory=10G \
--conf spark.executor.cores=5 \
--conf spark.yarn.am.cores=5 \
--conf spark.yarn.am.memory=15g \
--conf spark.executor.memoryOverhead=4096 \
--class "<java class>" <jar file> $arg1 $arg2 $arg3 $arg4
это вызывает ошибку, потому что arg4 имеет пробел, а код не обрабатывает значение arg4 как единственный аргумент. Я выполняю искровой код внутри сценария оболочки, я передал все значения переменной в сценарии оболочки.
arg1= "first"
arg2="second"
arg3="third"
arg4="country='USA' AND state='Newyork'"
при выполнении сценария оболочки с помощью sh -x, я вижу значение arg4 в команде строка вроде этой
'country='\''USA'\'' AND '\''state=NEWYORK'\'''
Как мы можем решить эту проблему? не могли бы вы помочь мне решить эту проблему.