Как могат да бъдат посочени множество файлове с -files в CLI на Amazon за EMR?

Опитвам се да стартирам amazon клъстер чрез amazon CLI, но съм малко объркан как трябва да посоча множество файлове. Текущото ми обаждане е следното:

aws emr create-cluster --steps Type=STREAMING,Name='Intra country development',ActionOnFailure=CONTINUE,Args=[-files,s3://betaestimationtest/mapper.py,-
files,s3://betaestimationtest/reducer.py,-mapper,mapper.py,-reducer,reducer.py,-
input,s3://betaestimationtest/output_0_inter,-output,s3://betaestimationtest/output_1_intra] 
--ami-version 3.1.0 
--instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m3.xlarge 
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m3.xlarge --auto-terminate 
--log-uri s3://betaestimationtest/logs

Сега обаче Hadoop се оплаква, че не може да намери файла на редуктора:

Caused by: java.io.IOException: Cannot run program "reducer.py": error=2, No such file or directory

какво правя грешно Файлът съществува в посочената от мен папка


person Lotte    schedule 10.12.2014    source източник


Отговори (3)


За предаване на множество файлове в стъпка за поточно предаване, трябва да използвате file://, за да предавате стъпките като json файл.

Съкратеният синтаксис на AWS CLI използва запетая като разделител за разделяне на списък с аргументи. Така че, когато се опитаме да предадем параметри като: "-files", "s3://betaestimationtest/mapper.py,s3://betaestimationtest/reducer.py", тогава съкратеният синтактичен анализатор ще третира mapper.py и reducer. py файлове като два параметъра.

Заобиколното решение е да използвате json формат. Моля, вижте примерите по-долу.

aws emr create-cluster --steps file://./mysteps.json --ami-version 3.1.0 --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m3.xlarge InstanceGroupType=CORE,InstanceCount=2,InstanceType=m3.xlarge --auto-terminate --log-uri s3://betaestimationtest/logs

mysteps.json изглежда така:

[
    {
    "Name": "Intra country development",
    "Type": "STREAMING",
    "ActionOnFailure": "CONTINUE",
    "Args": [
        "-files",
        "s3://betaestimationtest/mapper.py,s3://betaestimationtest/reducer.py",
        "-mapper",
        "mapper.py",
        "-reducer",
        "reducer.py",
        "-input",
        " s3://betaestimationtest/output_0_inte",
        "-output",
        " s3://betaestimationtest/output_1_intra"
    ]}
]

Можете също да намерите примери тук: https://github.com/aws/aws-cli/blob/develop/awscli/examples/emr/create-cluster-examples.rst. Вижте пример 13.

Дано помогне!

person Shuo    schedule 11.12.2014

Указвате -files два пъти, трябва да посочите само веднъж. Забравих дали CLI се нуждае от разделител да бъде интервал или запетая за множество стойности, но можете да опитате това.

Трябва да замените:

Args=[-files,s3://betaestimationtest/mapper.py,-files,s3://betaestimationtest/reducer.py,-mapper,mapper.py,-reducer,reducer.py,-input,s3://betaestimationtest/output_0_inter,-output,s3://betaestimationtest/output_1_intra]

с:

Args=[-files,s3://betaestimationtest/mapper.py s3://betaestimationtest/reducer.py,-mapper,mapper.py,-reducer,reducer.py,-input,s3://betaestimationtest/output_0_inter,-output,s3://betaestimationtest/output_1_intra]

или ако това не успее, с:

Args=[-files,s3://betaestimationtest/mapper.py,s3://betaestimationtest/reducer.py,-mapper,mapper.py,-reducer,reducer.py,-input,s3://betaestimationtest/output_0_inter,-output,s3://betaestimationtest/output_1_intra]
person Saurabh    schedule 11.12.2014
comment
Всъщност вече опитах и ​​двете опции. Първото нещо, което предлагате, води до следната грешка в моята конзола: Key value pairs, where values are separated by commas, and multiple pairs are separated by spaces. Втората опция също не работи в Amazon и дава следната грешка: Found 1 unexpected arguments on the command line [s3://betaestimationtest/intraCountryReducer.py] - person Lotte; 11.12.2014

Добавете escape за файлове, разделящи запетаи:

    Args=[-files,s3://betaestimationtest/mapper.py\\,s3://betaestimationtest/reducer.py,-mapper,mapper.py,-reducer,reducer.py,-input,s3://betaestimationtest/output_0_inter,-output,s3://betaestimationtest/output_1_intra]
person Roman Vodonenko    schedule 18.11.2015
comment
Това не проработи. Получих тази грешка: Намерих 1 неочакван аргумент на командния ред [s3://str-emr/reduce.rb] Опитайте -help за повече информация Неуспешна команда за поточно предаване! Командата излиза с ret '1' - person rajat banerjee; 26.02.2016