HBase
 sql >> база данни >  >> NoSQL >> HBase

Hadoop InputFormat &Типове InputFormat в MapReduce

В предишния ни урок за Hadoop , ние ви предоставихме подробно описание на Hadoop Mapper и Редуктор Сега в този блог ще разгледаме другия компонент на процеса MapReduce, т.е. Hadoop InputFormat.

Ще обсъдим какво е InputFormat в Hadoop, какви функции предоставя MapReduce InputFormat. Ще разгледаме също така видовете InputFormat в MapReduce и как да получите данните от mapper с помощта на InputFormat.

Какво е Hadoop InputFormat?

Hadoop InputFormat  описва входната спецификация за изпълнение на заданието Map-Reduce.

InputFormat описва как да разделяте и четете входни файлове. При изпълнението на задание MapReduce, InputFormat е първата стъпка. Той също така отговаря за създаването на входните раздели и разделянето им на записи.

Входните файлове съхраняват данните за заданието MapReduce. Входните файлове се намират в HDFS . Въпреки че форматът на тези файлове е произволен, можем също да използваме базирани на ред лог файлове и двоичен формат. Следователно в MapReduce класът InputFormat е един от основните класове, който предоставя по-долу функционалност:

  • InputFormat избира файловете или други обекти за въвеждане.
  • Той също така дефинира разделянето на данни. Той определя както размера на отделните задачи на картата и потенциалния сървър за изпълнение.
  • Hadoop InputFormat дефинира RecordReader. Той също така отговаря за четенето на действителните записи от входните файлове.

Как получаваме данните от Mapper?

Методите за получаване на данните от mapper са:getsplits() и createRecordReader() които са както следва:

public abstract class InputFormat<K, V>
{
public abstract List<InputSplit> getSplits(JobContext context)
throws IOException, InterruptedException;
public abstract RecordReader<K, V>
createRecordReader(InputSplit split,
TaskAttemptContext context) throws IOException,
InterruptedException;
}

Типове InputFormat в MapReduce

Има различни типове MapReduce InputFormat в Hadoop, които се използват за различни цели. Нека обсъдим типовете Hadoop InputFormat по-долу:

1. FileInputFormat

Това е основният клас за всички базирани на файлове InputFormats. FileInputFormat също посочва входна директория, която има местоположение на файлове с данни. Когато стартираме изпълнение на задание MapReduce, FileInputFormat предоставя път, съдържащ файлове за четене.

Този InpuFormat ще чете всички файлове. След това разделя тези файлове на един или повече InputSplits.

2. TextInputFormat

Това е входният формат по подразбиране. Този InputFormat третира всеки ред от всеки входен файл като отделен запис. Не извършва синтактичен анализ. TextInputFormat е полезен за неформатирани данни или базирани на ред записи като регистрационни файлове. Следователно,

  • Клавиш – Това е отместването на байта на началото на реда във файла (а не целия файл с едно разделяне). Така че ще бъде уникален, ако се комбинира с името на файла.
  • Стойност – Това е съдържанието на реда. Изключва терминатори на линии.

3. KeyValueTextInputFormat

Той е подобен на TextInputFormat. Този InputFormat също третира всеки входен ред като отделен запис. Макар че разликата е, че TextInputFormat третира целия ред като стойност, но KeyValueTextInputFormat разбива самия ред на ключ и стойност чрез табулаторен знак (‘/t’). Следователно,

  • Клавиш – Всичко до знака табулатор.
  • Стойност – Това е останалата част от реда след знака табулатор.

4. SequenceFileInputFormat

Това е InputFormat, който чете последователни файлове. Файловете с последователност са двоични файлове. Тези файлове също съхраняват поредици от двоични двойки ключ-стойност. Те са блоково компресирани и осигуряват директна сериализация и десериализация на няколко произволни данни. Следователно,

Ключът и стойността са дефинирани от потребителя.

5. SequenceFileAsTextInputFormat

Това е вариантът на SequenceFileInputFormat. Този формат преобразува ключовите стойности на файла последователност в текстови обекти. И така, той извършва преобразуване чрез извикване на „tostring() “ за ключовете и стойностите. Следователно SequenceFileAsTextInputFormat прави файловете с последователност подходящи за поточно предаване.

6. SequenceFileAsBinaryInputFormat

С помощта на SequenceFileInputFormat можем да извлечем ключовете и стойностите на файла с последователността като непрозрачен двоичен обект.

7. NlineInputFormat

Това е друга форма на TextInputFormat, където ключовете са байтове отместени от реда. А стойностите са съдържанието на реда. Така че всеки картограф получава променлив брой входни редове с TextInputFormat и KeyValueTextInputFormat.

Броят зависи от размера на разделянето. Освен това зависи от дължината на линиите. Така че, ако искаме нашият мапер да получава фиксиран брой входни редове, тогава използваме NLineInputFormat.

N- Това е броят на входните редове, които всеки мапер получава.

По подразбиране (N=1) всеки картограф получава точно един входен ред.

Да предположим, че N=2, тогава всяко разделяне съдържа два реда. И така, един картограф получава първите две двойки ключ-стойност. Друг картограф получава вторите две двойки ключ-стойност.

8. DBInputFormat

Този InputFormat чете данни от релационна база данни, използвайки JDBC. Той също така зарежда малки набори от данни, може би за свързване с големи набори от данни от HDFS с помощта на MultipleInputs. Следователно,

  • Клавиш – LongWritables
  • Стойност – DBWritables.

Заключение

Следователно InputFormat дефинира как да се четат данни от файл в екземпляри на Mapper. В този урок научихме много видове InputFormat като FileInputFormat, TextInputFormat и др.

Форматът за въвеждане по подразбиране е TextInputFormat. Ако имате някакви запитвания, свързани с MapReduce InputFormat, не се колебайте да споделите с нас. Надяваме се да ги разрешим.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Изграждане на мащабируем процес с помощта на NiFi, Kafka и HBase на CDP

  2. HDFS Data Block – Научете вътрешностите на Big Data Hadoop

  3. Как да:Включете библиотеки на трети страни във вашата задача MapReduce

  4. Apache HBase, които трябва и не трябва

  5. Какво представляват HBase уплътненията?