Пономаренко Роман
@rerand0m
rerandom@ispras.ru
yarn jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-streaming.jar \ -D mapreduce.job.name="my_awesome_job_name" \ -mapper mapper.py \ -combiner reducer.py \ -reducer reducer.py \ -files mapper.py,reducer.py \ # dfc -input /data/wiki/en_articles_part \ -output mr_result
Docs: Configured, Tool
job.setInputFormatClassTextInputFormat(LongWritable offset, Text rawString)KeyValueTextInputFormatIntWritable, Text)SequenceFileInputFormat*Writable* типах-cat не получитсяДля обеспечения сериализации/десериализации есть интерфейсы Writable и WritableComparable.
Для ключей необходимо использовать WritableComparable.
Для значений достаточно Writable.
WritableComparable.yarn jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-streaming.jar \ -D mapreduce.job.name="my_awesome_job_name" \ -D mapreduce.job.reduces=${NUM_REDUCERS} \ -mapper mapper.py \ -combiner reducer.py \ -reducer reducer.py \ -files mapper.py,reducer.py \ # dfc -input /data/wiki/en_articles_part \ -output mr_result
TotalOrderPartitionerRandomSampler
Такой Sampler запускается на mapper, поэтому есть требование, чтобы он не менял сигнатуру данных (особенность реализации).
Посчитать число вопросов и ответов по возрастам
/data/stackexchange/posts - посты
/data/stackexchange/users - пользователи
(userid, age, q, a)(age, q, a)