Разделенный запятыми список в кусте становится двумя столбцами при отправке вывода в CSV - PullRequest
0 голосов
/ 25 мая 2018

У меня есть таблица в улье, в которой есть список, созданный с использованием collect_set.Когда я запрашиваю таблицу и отправляю вывод в файл csv, список становится другим столбцом вместо одного столбца.

query

 hive - e "Select col1 from table" | sed 's/[\t]/,/g'  > output.csv

Текущий вывод csv имеет два столбца, подобных этому

  col1         col2
 ["Apple"      "Mango"]
 ["Apple"      "Pineapple"]
 ["Orange"     "Mango"]
 ["Apple"      "Mango"]

Как получить вывод файла в виде одного столбца col1:

 col1
 ["Apple","Mango"]
 ["Apple","Pineapple"]
 ["Orange","Mango"]
 ["Apple","Mango"]

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Я нашел способ сделать это с помощью запроса улья

hive - e "Select concat_ws('\\;',col1) as col1 from table" | sed 's/[\t]/,/g'  > output.csv

Я разделил элементы в списке с помощью точек с запятой

0 голосов
/ 31 мая 2018

Вот вывод вашей команды для «текущего csv»:

col1,       col2
["Apple",   "Mango"]
["Apple",   "Pineapple"]
["Orange",   "Mango"]
["Apple",   "Mango"]

Между каждым полем у вас была вкладка и 3 пробела.Таким образом, пробелы не будут заменяться запятыми.Если вы просто пытаетесь удалить лишнее пространство, вы можете попробовать

hive - e "Select col1 from table" | sed 's/[\t]/,/g' | sed 's/ *//g'  > output.csv

Вывод:

col1,col2
["Apple","Mango"]
["Apple","Pineapple"]
["Orange","Mango"]
["Apple","Mango"]

Не уверен, что это то, что вы хотите, но это удалитлишние пробелы.У вас все еще будут два заголовка столбца.В файле с разделителями-запятыми ваши столбцы разделены запятыми, поэтому это по-прежнему 2 столбца.

...