如何转义 AWS Glue 作业的参数值中的空格?
How do I escape spaces in argument values for an AWS Glue job?
我正在尝试将此参数传递给作业:
--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'
我试过这些值,但 none 有效:
2018-02-18 21:30:01
"2018-02-18 21:30:01"
"2018-02-18\ 21:30:01"
2018-02-18\ 21:30:01
我没有找到在参数值中传递 space 的合适方法。
我只是使用了不同的时间格式,例如“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)
我正在尝试将此参数传递给作业:
--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'
我试过这些值,但 none 有效:
2018-02-18 21:30:01
"2018-02-18 21:30:01"
"2018-02-18\ 21:30:01"
2018-02-18\ 21:30:01
我没有找到在参数值中传递 space 的合适方法。 我只是使用了不同的时间格式,例如“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)