2015-10-21 3 views
1

Я пытаюсь экспортировать таблицу в локальный файл csv в куст.Экспортировать таблицу в виде значений с кавычками в локальный csv в hive

Проблема в том, что некоторые из значений содержат символ новой строки "\ n", и полученный файл становится действительно беспорядочным.

Есть ли способ вложения значений в кавычки при экспорте в Hive, так что файл csv может содержать специальные символы (и особенно новую строку)?

ответ

2

Одним из возможных решений может быть использование Hive CSV SerDe (Serializer/Deserializer). Он дает возможность указать custom delimiters, quote, and escape characters.

Ограничение:

Он не обрабатывает embedded newlines

Доступность:

CSV Serde доступна в Hive 0.14 и больше.

фона:

CSV SerDe основан из https://github.com/ogrodnek/csv-serde, и добавляли к распределению Hive в HIVE-7777.

Использование:

Это SerDe действует для максимум CSV data, но не обрабатывается embedded newlines. Для использования SerDe укажите полное имя класса org.apache.hadoop.hive.serde2.OpenCSVSerde.

оригинальная документация доступна по адресу: https://github.com/ogrodnek/csv-serde.

CREATE TABLE my_table(a string, b string, ...) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES (
    "separatorChar" = "\t", 
    "quoteChar"  = "'", 
    "escapeChar" = "\\" 
) 
STORED AS TEXTFILE; 

По умолчанию разделитель, цитирую, и управляющие символы, если неустановленный

DEFAULT_ESCAPE_CHARACTER \ 
DEFAULT_QUOTE_CHARACTER " 
DEFAULT_SEPARATOR  , 

Артикул: Hive csv-serde