我创建了一个pyspark脚本(胶水作业),并尝试使用cli命令通过a2胶水start-job-run --arguments在EC2实例中运行(此处我正在传递参数列表)。我已经尝试过速记语法和json语法来通过上述cli命令传递参数,但是却收到错误消息“ GlueArgumentError:parameter --input_file_path is required”(输入文件路径是我试图在pyspark脚本,如下所示)
spark = SparkSession.builder.getOrCreate()
args = getResolvedOptions(sys.argv, ['input_file_path', 'CONFIG_FILE_PATH', 'SELECTED_RECORD_FILE_PATH', 'REJECTED_RECORD_FILE_PATH']
Run Code Online (Sandbox Code Playgroud)
我用来运行作业的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)
Run Code Online (Sandbox Code Playgroud)
在方法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"
}
Run Code Online (Sandbox Code Playgroud)
由于我正努力从几个小时内解决上述问题,请给我建议。
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"'
Run Code Online (Sandbox Code Playgroud)
在你的工作中:
args = getResolvedOptions(sys.argv, ['input_file_path']
Run Code Online (Sandbox Code Playgroud)
当从控制台运行Glue作业时,此问题也很明显。
作业参数必须以'-'前缀指定,并且在脚本中不带前缀即可引用。
args = getResolvedOptions(sys.argv, ['JOB_NAME', 'table_name'])
print(args['table_name'])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2500 次 |
| 最近记录: |