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

时间:2017-11-28 10:26:09

标签: aws-glue

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

请告诉我,因为我几个小时都在努力解决上述问题。

5 个答案:

答案 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作业时,此问题也很明显。

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

enter image description here

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="