AWS Glue-“ GlueArgumentError:参数--input_file_path是必需的”

Yog*_*her 4 aws-glue

我创建了一个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)

由于我正努力从几个小时内解决上述问题,请给我建议。

hoa*_*axz 8

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)


com*_*day 6

当从控制台运行Glue作业时,此问题也很明显。

作业参数必须以'-'前缀指定,并且在脚本中不带前缀即可引用。

在此处输入图片说明

args = getResolvedOptions(sys.argv, ['JOB_NAME', 'table_name'])

print(args['table_name'])
Run Code Online (Sandbox Code Playgroud)

  • 事实上,参数可以通过“编辑作业”从控制台配置,并且_必须_以双连字符为前缀,这使得 AWS 没有提到最终用户必须提供它几乎是不可原谅的。他们关于 [添加作业](https://docs.aws.amazon.com/glue/latest/dg/add-job.html) 和 [调用 API](https://docs.aws.amazon.com) 的文档/glue/latest/dg/aws-glue-programming-python-calling.html#aws-glue-programming-python-calling-parameters) 确实显示了双连字符,但它更有意义在 GUI 中调用。 (3认同)