Какие форматы файлов можно прочитать с помощью PIG? как я могу хранить их в разных форматах?
Существует несколько встроенных методов загрузки и хранения , но они ограничены:
- BinStorage - «бинарное» хранилище
- PigStorage - загружает и сохраняет данные, разделенные чем-либо (например, табуляцией или запятой)
- TextLoader - строка за строкой загружает данные (т. Е. Разделяется символом новой строки)
piggybank - это библиотека пользовательских функций, предоставленных сообществом, и имеет ряд методов загрузки и хранения , которые включают загрузчик XML, но не хранитель XML.
скажем, у нас есть файл CSV и я хочу сохранить его как файл MXL, как это можно сделать?
Я предполагаю, что вы имеете в виду XML здесь ... Хранение в XML - это что-то немного грубое в Hadoop, потому что оно разбивает файлы по принципу редуктора, так как вы знаете, где разместить корневой тег? скорее всего, это должна быть какая-то постобработка для получения хорошо сформированного XML.
Одна вещь, которую вы можете сделать, это написать UDF , который преобразует ваши столбцы в строку XML:
B = FOREACH A GENERATE customudfs.DataToXML(col1, col2, col3);
Например, скажем, col1
, col2
, col3
равны "foo"
, 37
, "lemons"
соответственно. Ваш UDF может вывести строку "<item><name>Foo</name><num>37</num><fruit>lemons</fruit></item>"
.
всякий раз, когда мы используем команду STORE, она создает каталог и сохраняет файл как part-m-00000. Как я могу изменить имя файла и перезаписать каталог?
Вы не можете изменить имя выходного файла на другое, отличное от part-m-00000
. Вот как работает Hadoop. Если вы хотите изменить его название, вы должны сделать что-то после факта с чем-то вроде hadoop fs -mv output/part-m-00000 newoutput/myoutputfile
. Это можно сделать с помощью сценария bash, который запускает сценарий pig и затем выполняет эту команду.