我创建了一个pyspark脚本(粘合作业)并尝试使用cli命令运行EC2实例aws glue start-job-run --arguments(这里我传递参数列表)。我已尝试使用短手语法和json语法通过上面的cli命令传递参数但是我收到错误“GlueArgumentError:参数--input_file_path是必需的”(输入文件路径是参数我试图访问pyspark脚本,如下所示)
spark = SparkSession.builder.getOrCreate()
args = getResolvedOptions(sys.argv, ['input_file_path', 'CONFIG_FILE_PATH', 'SELECTED_RECORD_FILE_PATH', 'REJECTED_RECORD_FILE_PATH']
我用来运行这项工作的cli命令如下:
1] aws glue start-job-run --job-name dsb_clng_and_vldtn --arguments input_file_path="s3://dsb-lfnsrn-001/lndg/data/CompanyData_UK.csv"
2] aws glue start-job-run --job-name dsb_clng_and_vldtn --arguments "file://$JSON_FILES_PATH/job_arguments_list.json"
(JSON_FILES_PATH is shell variable)
在方法2]中,我使用json语法来执行作业。 json文件内容如下:
{
"input_file_path":"s3://dsb-lfnsrn-001/lndg/data/CompanyData_UK.csv",
"CONFIG_FILE_PATH":"s3://htcdsb-dev/wrkspc/src/dsb-lfnsrn-001-config.json",
"SELECTED_RECORD_FILE_PATH":"s3://dsb-lfnsrn-001/pckpby/processed/Valid_UK.csv",
"REJECTED_RECORD_FILE_PATH":"s3://dsb-lfnsrn-001/pckpby/processed/Invalid_UK.csv"
}
请告诉我,因为我几个小时都在努力解决上述问题。
答案 0 :(得分:3)
getResolvedOptions
期望传递的参数在作业调用中具有双连字符。
aws glue start-job-run --job-name dsb_clng_and_vldtn --arguments='--input_file_path="s3://dsb-lfnsrn-001/lndg/data/CompanyData_UK.csv"'
在你的工作中:
args = getResolvedOptions(sys.argv, ['input_file_path']
答案 1 :(得分:3)
从控制台运行Glue作业时,此问题也很明显。
作业参数必须以'-'前缀指定,并且在脚本中不带前缀引用。
args = getResolvedOptions(sys.argv, ['JOB_NAME', 'table_name'])
print(args['table_name'])
答案 2 :(得分:2)
今天的回答确实帮助了我。我想补充一点,您也不能在参数名称中使用连字符。
例如,我尝试过:
ARGUMENTS = {
'--s3-source': 's3://cs3-bucket-here/'
}
response = glue.start_job_run(JobName=JOB_NAME, Arguments=ARGUMENTS)
我收到了KeyErrors。当我在API调用中以及在Glue脚本中将“ s3-source”替换为“ s3_source”时,它成功运行。
答案 3 :(得分:1)
要为胶粘作业运行多个参数,请用逗号添加分隔的参数。这对我有用:
aws glue start-job-run --job-name "example-my-glue-job" --arguments="--input_first_day=2013-01-01","--input_last_day=2013-01-31","--run_timestamp=20200803211121"
答案 4 :(得分:0)
值得一提的另一件事是,多个参数需要分别添加,如下所示。还要注意没有值的参数的说明。
aws glue start-job-run --job-name Ivan-Air-ETL --arguments="--job-bookmark-option=job-bookmark-enable" --arguments="--enable-metrics="