Как скачать данные из улья Билайн в формате csv2? - PullRequest
0 голосов
/ 30 сентября 2018

У меня проблема при загрузке данных из улья через билайн.

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

Я знаю, что beeline предоставляет формат вывода csv2 для этого варианта использования.

Но я не получаю ожидаемых результатов.

Для этого я создал образец таблицы с данными.

    0: jdbc:hive2://ip:10000/default> DESC samp_ret;
+-------------+------------+----------+--+
|  col_name   | data_type  | comment  |
+-------------+------------+----------+--+
| intvar      | int        |          |
| stringvar1  | string     |          |
| stringvar2  | string     |          |
+-------------+------------+----------+--+
3 rows selected (0.081 seconds)
0: jdbc:hive2://ip:10000/default>  SELECT * FROM samp_ret ;
+------------------+----------------------+----------------------+--+
| samp_ret.intvar  | samp_ret.stringvar1  | samp_ret.stringvar2  |
+------------------+----------------------+----------------------+--+
| 1                | one,ONE              | One                  |
| 2                | 2                    | Two                  |
| 3                |                      | Three                |
| 4                | four,FOUR            |                      |
| 5                | five'FIVE            | Five                 |
| 6                | six',SIX             | Six                  |
+------------------+----------------------+----------------------+--+
6 rows selected (0.164 seconds)

Я пытаюсь загрузить эти данные на сервер приложений, но по какой-то причине я не вижузаписи, содержащие запятую в кавычках.

Используемая команда Beeline:

beeline -u jdbc:hive2://ip:10000/default?zeroDateTimeBehavior=round -n yumecorp yumehive org.apache.hive.jdbc.HiveDriver --showHeader=false --outputformat=csv2 --silent -e "SELECT * FROM dev.samp_ret " > /tmp/samp_ret.out

Вывод:

enter image description here

Как вы можете видеть в выводе, если значение столбца имеет запятую, тогда оно отображается как ^ @

Дайте мне знать, если я что-то здесь упускаю.

1 Ответ

0 голосов
/ 30 сентября 2018

Экспорт указанного ниже свойства в оболочке перед выполнением команды beeline

bash$ export HADOOP_CLIENT_OPTS="-Ddisable.quoting.for.sv=false"

Затем выполните команду экспорта beeline

beeline -u jdbc:hive2://ip:10000/default?zeroDateTimeBehavior=round -n yumecorp yumehive org.apache.hive.jdbc.HiveDriver --showHeader=false --outputformat=csv2 --silent -e "SELECT * FROM dev.samp_ret " > /tmp/samp_ret.out

Пример:

У меня есть 2 строковых столбца в таблицах после

hive> select * from i;
+-------+---------+--+
| i.id  | i.name  |
+-------+---------+--+
| 1     | kl,kl   |
| 2     | ll,mm   |
+-------+---------+--+

Теперь выполняется экспорт в CSV-файл с приложенным "" для значений столбца имени

bash$ export HADOOP_CLIENT_OPTS="-Ddisable.quoting.for.sv=false"
bash$ beeline --showHeader=false --outputformat=csv2 --silent -e "SELECT * FROM default.i" > samp_ret.out
bash$ cat samp_ret.out 
1,"kl,kl"
2,"ll,mm"

Более подробную информацию см. В этом улье Джира .

...