如何在AWS Glue作业的参数值中转义空格?

时间:2018-02-19 09:35:24

标签: amazon-web-services apache-spark arguments escaping aws-glue

我试图将这个论点传递给一份工作:

--dimension-effective-date "2018-02-18 21:30:01"

无论是使用控制台还是boto3,我似乎无法让AWS将日期视为单个字符串。

查看日志,我看到了:

8/02/19 09:06:19 DEBUG Client: LD_LIBRARY_PATH="/usr/lib/hadoop/lib/native:/usr/lib/hadoop-lzo/lib/native:$LD_LIBRARY_PATH" {{JAVA_HOME}}/bin/java -server -Xmx5120m -Djava.io.tmpdir={{PWD}}/tmp '-XX:+UseConcMarkSweepGC' '-XX:CMSInitiatingOccupancyFraction=70' '-XX:MaxHeapFreeRatio=70' '-XX:+CMSClassUnloadingEnabled' '-XX:OnOutOfMemoryError=kill -9 %p' '-Djavax.net.ssl.trustStore=InternalAndExternalAndAWSTrustStore.jks' '-Djavax.net.ssl.trustStoreType=JKS' '-Djavax.net.ssl.trustStorePassword=amazon' '-DRDS_ROOT_CERT_PATH=rds-combined-ca-bundle.pem' -Dspark.yarn.app.container.log.dir=<LOG_DIR> org.apache.spark.deploy.yarn.ApplicationMaster --class 'org.apache.spark.deploy.PythonRunner' --primary-py-file runscript.py --arg 'script_2018-02-19-09-05-57.py' --arg '--JOB_NAME' --arg 'monthly' --arg '--JOB_ID' --arg 'j_4b99fb0ee2fb4f0d96908f082a1aec00b4155624c6eb3aba9e9d59350aeb6c97' --arg '--year' --arg '2017' --arg '--JOB_RUN_ID' --arg 'jr_794af6903595a5b0c358efb12b1f398ccf9fe58a1cff8d5ae0fcee20490f0cd2' --arg '--month' --arg '11' --arg '--dimension-effective-date' --arg '2018-02-18' --arg '21:30:01' --arg '--job-bookmark-option' --arg 'job-bookmark-disable' --arg '--TempDir' --arg 's3://[clipped]/jobs/test_trunc/tmp' --properties-file {{PWD}}/__spark_conf__/__spark_conf__.properties 1> <LOG_DIR>/stdout 2> <LOG_DIR>/stderr

问题就在这里:

--arg '--dimension-effective-date' --arg '2018-02-18' --arg '21:30:01'

我需要那样:

--arg '--dimension-effective-date' --arg '2018-02-18 21:30:01'

我已尝试过这些价值观,但都没有效果:

2018-02-18 21:30:01
"2018-02-18 21:30:01"
"2018-02-18\ 21:30:01"
2018-02-18\ 21:30:01

1 个答案:

答案 0 :(得分:1)

我没有找到在参数值中传递空格的合适方法。 我只是使用了不同的时间格式,比如“ 2018-02-18T21:30:01 ”并在python脚本端解析它,如下所示:

from datetime import datetime

DATETIME_FORMAT = '%Y-%m-%dT%H:%M:%S'

required_args = getResolvedOptions(sys.argv, ['start_at'])
start_at = required_args['start_at']

start_dt = datetime.strptime(start_at, DATETIME_FORMAT)