В этой главе мы подробно узнаем о том, как Talend работает с распределенной файловой системой Hadoop.
Настройки и предварительные условия
Прежде чем мы перейдем к Talend с HDFS, мы должны узнать о настройках и предварительных условиях, которые должны быть выполнены для этой цели.
Здесь мы запускаем Cloudera quickstart 5.10 VM на виртуальной коробке. В этой виртуальной машине должна использоваться сеть только для хоста.
IP-адрес только для хоста: 192.168.56.101
У вас должен быть тот же хост, работающий на менеджере Cloudera.
Теперь в вашей системе Windows перейдите в c: \ Windows \ System32 \ Drivers \ etc \ hosts и отредактируйте этот файл с помощью Блокнота, как показано ниже.
Аналогично, на вашей виртуальной машине cloudera quickstart отредактируйте файл / etc / hosts, как показано ниже.
sudo gedit /etc/hosts
Настройка подключения Hadoop
На панели хранилища перейдите в раздел Метаданные. Щелкните правой кнопкой мыши Hadoop Cluster и создайте новый кластер. Укажите имя, назначение и описание для этого кластерного соединения Hadoop.
Нажмите кнопку «Далее.
Выберите дистрибутив как cloudera и выберите версию, которую вы используете. Выберите опцию получения конфигурации и нажмите «Далее».
Введите учетные данные менеджера (URI с портом, именем пользователя, паролем), как показано ниже, и нажмите «Подключиться». Если данные верны, вы получите Cloudera QuickStart под обнаруженными кластерами.
Нажмите «Получить». Это позволит получить все соединения и конфигурации для HDFS, YARN, HBASE, HIVE.
Выберите Все и нажмите Готово.
Обратите внимание, что все параметры подключения будут заполнены автоматически. Укажите cloudera в имени пользователя и нажмите Finish.
Благодаря этому вы успешно подключились к кластеру Hadoop.
Подключение к HDFS
В этой работе мы перечислим все каталоги и файлы, которые присутствуют в HDFS.
Сначала мы создадим задание, а затем добавим к нему компоненты HDFS. Щелкните правой кнопкой мыши на Job Design и создайте новую работу — hadoopjob.
Теперь добавьте 2 компонента из палитры — tHDFSConnection и tHDFSList. Щелкните правой кнопкой мыши tHDFSConnection и соедините эти 2 компонента, используя триггер OnSubJobOk.
Теперь настройте оба компонента talend hdfs.
В tHDFSConnection выберите «Хранилище» в качестве типа свойства и выберите кластер Hadoop cloudera, который вы создали ранее. Он автоматически заполнит все необходимые данные, необходимые для этого компонента.
В tHDFSList выберите «Использовать существующее соединение», а в списке компонентов выберите настроенное соединение tHDFSConnection.
Укажите домашний путь HDFS в каталоге HDFS и нажмите кнопку обзора справа.
Если вы правильно установили соединение с вышеупомянутыми конфигурациями, вы увидите окно, показанное ниже. В нем будут перечислены все каталоги и файлы, имеющиеся на домашней HDFS.
Вы можете убедиться в этом, проверив HDFS на cloudera.
Чтение файла из HDFS
В этом разделе давайте разберемся, как читать файл из HDFS в Talend. Вы можете создать новую работу для этой цели, однако здесь мы используем существующую.
Перетащите 3 компонента — tHDFSConnection, tHDFSInput и tLogRow из палитры в окно конструктора.
Щелкните правой кнопкой мыши tHDFSConnection и подключите компонент tHDFSInput с помощью триггера OnSubJobOk.
Щелкните правой кнопкой мыши tHDFSInput и перетащите основную ссылку на tLogRow.
Обратите внимание, что tHDFSConnection будет иметь конфигурацию, аналогичную ранее. В tHDFSInput выберите «Использовать существующее соединение» и в списке компонентов выберите tHDFSConnection.
В поле Имя файла укажите путь к файлу HDFS, который вы хотите прочитать. Здесь мы читаем простой текстовый файл, поэтому наш тип файла — текстовый файл. Точно так же, в зависимости от вашего ввода, заполните разделитель строк, разделитель полей и данные заголовка, как указано ниже. Наконец, нажмите кнопку Изменить схему.
Поскольку в нашем файле просто текст, мы добавляем только один столбец типа String. Теперь нажмите Ok.
Примечание. Если вход содержит несколько столбцов разных типов, необходимо указать схему здесь соответствующим образом.
В компоненте tLogRow щелкните Синхронизировать столбцы в схеме редактирования.
Выберите режим, в котором вы хотите, чтобы ваш вывод был распечатан.
Наконец, нажмите Run, чтобы выполнить задание.
После того, как вы успешно прочитали файл HDFS, вы можете увидеть следующий результат.
Запись файла в HDFS
Давайте посмотрим, как написать файл из HDFS в Talend. Перетащите 3 компонента — tHDFSConnection, tFileInputDelimited и tHDFSOutput из палитры в окно конструктора.
Щелкните правой кнопкой мыши tHDFSConnection и подключите компонент tFileInputDelimited с помощью триггера OnSubJobOk.
Щелкните правой кнопкой мыши tFileInputDelimited и перетащите основную ссылку в tHDFSOutput.
Обратите внимание, что tHDFSConnection будет иметь конфигурацию, аналогичную ранее.
Теперь в tFileInputDelimited укажите путь к входному файлу в опции File name / Stream. Здесь мы используем CSV-файл в качестве входных данных, поэтому разделитель полей — «,».
Выберите верхний и нижний колонтитулы, лимит в соответствии с вашим входным файлом. Обратите внимание, что здесь наш заголовок равен 1, поскольку строка 1 содержит имена столбцов, а ограничение равно 3, поскольку мы записываем только первые 3 строки в HDFS.
Теперь нажмите «Изменить схему».
Теперь, согласно нашему входному файлу, определите схему. Наш входной файл имеет 3 столбца, как указано ниже.
В компоненте tHDFSOutput щелкните по столбцам синхронизации. Затем выберите tHDFSConnection в Использовать существующее соединение. Также в поле «Имя файла» укажите путь HDFS, в который вы хотите записать свой файл.
Обратите внимание, что тип файла будет текстовым, действие будет «создавать», разделитель строк будет «\ n», а разделитель полей — «;»
Наконец, нажмите Run, чтобы выполнить вашу работу. После успешного выполнения задания проверьте, есть ли ваш файл в HDFS.
Запустите следующую команду hdfs с выходным путем, который вы упомянули в своей работе.
hdfs dfs -cat /input/talendwrite
Вы увидите следующий вывод, если вы успешно пишете на HDFS.