Аліас що приймає параметри
При вивченні Hadoop зіткнувся з проблемою запуску MapReduce завдань великою і страшною командою:
Отже, рішення просте написати функцію, яка опрацьовує передані параметриб та призначити їй алас. Ось зразок мого коду:
hadoop -jar /повний_шлях_до_jar_бібліотеки_haddop_streaming -map файл_маппер -reduce файл_ред'юсер -file файл_маппер -file файл_ред'юсер -input папка_з_даним_що_тре_опрацювати -output папка_для_результатівЯ бачите команда довга та страшна :), можна легко заробити помилку. Складність команди змусила мене звернутися до alias, проте вони не приймають параметрів. Трошки погугливши знайшов рішення тут та тут.
Отже, рішення просте написати функцію, яка опрацьовує передані параметриб та призначити їй алас. Ось зразок мого коду:
export HADOOP_STREAMING="/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.3.0-mr1-cdh5.0.0.jar"
hadoop_task()
{
if [ $# -ne 4 ]; then
echo "Please provide all data";
echo "Usage hs [mapper_file_name] [reducer_file_name] [input_dir] [output_dir]";
else
if [[ -e $1 ]] && [[ -e $2 ]]; then
echo `hadoop jar ${HADOOP_STREAMING} -mapper $1 -reducer $2 -file $1 -file $2 -input $3 -output $4`;
else
echo "File names you have provided does not find";
fi;
fi
}
alias hs=hadoop_task
Тепер команду можна викликати так:
hs mapper.py reducer.py myinput output
! Будьте уважні використання існуючої папки для виводу результатів MapReduce b Hadoop призводить до помидки, що унеможливлює проведення операцій обчислення.
Comments
Post a Comment