Лекция 9. Hadoop Streaming_ Joins (1185417), страница 2
Текст из файла (страница 2)
Входные файлы должны быть отсортированы по ключу2. Входные файлы должны иметь одинаковое число частей (по-сути, выходных файловMapReduce задач)3. Поддерживаются inner и outer joins.Join на стороне ReducerSYMBOLMOMENTтег источникаCLOSESVH120110111100030.1SVH120110111100530.5SVH120110111101030.6SVH120110111101530.2SYMBOLMOMENTCLOSERIH120110111100517100RIH120110111101017300RIH120110111101517200......reduce201101111000SVH1reduce30.1reducereduce201101111005SVH130.5201101111010SVH130.6201101111015SVH130.2201101111005RIH117100201101111010RIH117300201101111015RIH117200...Join на стороне Reducer●●●●●Любые типы joinНакладные расходы на shuffleДля непосредственно join внутри reduce полезна Secondary SortДля импорта нескольких источников используется класс: org.apache.hadoop.mapreduce.lib.input.MultipleInputsОтделение логики join от reduce: org.apache.hadoop.contrib.utils.join.DataJoinReducerBaseДальнейшие планы●●●Лекция “Pig, Hive”1 или 2 лекции “Spark”Решение задачЧто не вошло в курс из Hadoop и его стека●Hadoop:○○○○●●●●●●●PipesСцепление задач MapReduceЮнит-тестированиеOutputFormatAvroParquetFlumeSqoopCrunchHBaseZooKeeperРазбор домашнего задания №2Основные шаги1)2)3)4)Использование двух job: первый для формирования правильногоформата, второй – для работы TotalOrderPartitioner;Создание Writable класса для работы с минимумом и максимумом – этобудет значением;Создание WritableComparable класса для работы с ключом: комбинациейдаты и инструмента;TotalOrderPartitioner:TotalOrderPartitioner.setPartitionFile(myConf, PartitionPath);InputSampler.Sampler<Key, Value> sampler = new InputSampler.RandomSampler<Key, Value>(1, 300);InputSampler.writePartitionFile(myJob, sampler);.