2012-07-03 4 views
3

Есть ли способ настроить разделитель для работ Hive MR? По умолчанию разделитель, используемый внутренним ульем, является «ограничителем улья» (/ 001). Мое распоряжение заключается в настройке разделителя, чтобы я мог использовать любой разделитель в соответствии с требованием. В hasoop есть свойство maprate.textoutputformatter.separator, которое установит разделитель ключа-значения в значение, указанное для этого свойства. Есть ли такой способ настройки разделителя в Hive? .. Я искал много, но didn ' t получить полезные ссылки. Пожалуйста, помогите мне.Конфигурирование разделителя для рабочих мест Hive MR

ответ

0

Вы можете попробовать это:

SELECT (rest of your query) 
ROW FORMAT DELIMITED 
    FIELDS TERMINATED BY 'YourChar' (example: FIELDS TERMINATED BY '\t') 
+0

Благодарим за быстрый ответ. Но проблема здесь в том, что мы пишем уст MR o/p в местоположение dfs. Если куст использует разделитель как '\ 001', тогда может быть какой-то способ его явно настроить, например, установив некоторые свойства. –

1

По улья 0.11.0, вы можете написать

INSERT OVERWRITE LOCAL DIRECTORY '...' 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 
SELECT ... 

См HIVE-3682 для полного синтаксиса.

0

Вы также можете использовать это: -

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
WITH SERDEPROPERTIES ('field.delim'='-','serialization.format'='-') 

Это отдельные столбцы, используя - разделителей но это относится только к LazSimpleSerde.

0

Возможно, вы используете опцию INSERT OVERWRITE DIRECTORY для записи в файл hdfs. Если вы создаете таблицу улей поверх файла hdfs без разделителя, в качестве разделителя он примет значение «\ 001», поэтому вы можете прочитать файл из таблицы улей без каких-либо проблем.

0

Если вы используете исходную таблицу dnt not укажите разделитель в инструкции создания схемы, тогда вы не сможете это изменить. У вас всегда будет указатель по умолчанию. И да, ограничитель будет контролироваться путем создания схемы для исходной таблицы. Таким образом, это тоже невозможно. У меня была аналогичная проблема, и в конце концов я модифицировал 001 как второй шаг после завершения работы MR.

Смежные вопросы