2013-02-28 4 views
9

Я использую сценарий куста на Amazon EMR для анализа некоторых данных.Добавление заголовков столбцов к набору результатов улей

И я передаю вывод в ковш Amazon s3. Теперь результаты сценария hive не содержат заголовков столбцов.

Я также попытался использовать это:

set hive.cli.print.header=true; 

Но это не помогает. Можете ли вы мне помочь?

+0

ли вы хотите столбцов заголовки, включенные в какой-то выходной файл только увидеть их в интерфейсе командной строки? – www

+0

@Wawrzniec Я хочу, чтобы они были в выходном файле. – Sam

ответ

3

Я думаю, что прямой способ все еще невозможно (HIve: writing column headers to local file?). Некоторые решение будет экспорт результат DESCRIBE table_name в файл:

$ hive -e 'DESCRIBE table_name' > file 

И написать некоторый сценарий, добавить имена столбцов в файле данных. GL!

2

Я столкнулся с этой проблемой сегодня и смог получить то, что мне нужно, выполнив UNION ALL между исходным запросом и новым фиктивным запросом, который создает строку заголовка. Я добавил столбец сортировки в каждом разделе и установил заголовок в 0 и данные в 1, чтобы я мог сортировать по этому полю и убедиться, что строка заголовка вышла сверху.

create table new_table as 
select 
    field1, 
    field2, 
    field3 
from 
(
    select 
    0 as sort_col, --header row gets lowest number 
    'field1_name' as field1, 
    'field2_name' as field2, 
    'field3_name' as field3 
    from 
    some_small_table --table needs at least 1 row 
    limit 1 --only need 1 header row 
    union all 
    select 
    1 as sort_col, --original query goes here 
    field1, 
    field2, 
    field3 
    from 
    main_table 
) a 
order by 
    sort_col --make sure header row is first 

Это немного громоздко, но по крайней мере вы можете получить то, что вам нужно, с помощью одного запроса.

Надеюсь, это поможет!

8

Точно, как выглядит ваш сценарий для улья?

Имеет ли в результате вывод вашего сценария улья данные заголовка? Это ли потеряется при копировании вывода в ваш s3-ведро?

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

Не зная этих деталей, вот что-то, что вы могли бы попробовать.

Создать свой улей скрипт следующим образом:

USE dbase_name: 
SET hive.cli.print.header=true; 
SELECT some_columns FROM some_table WHERE some_condition; 

Затем запустите скрипт:

$ hive -f hive_script.hql > hive_output 

Затем скопируйте выход на свой s3 ведро

$ aws s3 cp ./hive_output s3://some_bucket_name/foo/hive_output 
+0

Привет, sqoop получает данные от oracle, но не схемы/заголовков. Я хочу, чтобы схема была в виде заголовков. Например, имя, возраст, местонахождение venu, 31, Banlgaore srinu, 32, Hyderabad ..... llike this.Как получить схему в виде заголовков, а не как этот формат. Oracle для S3 (в sqoop), .. не для локального .. для s3, как выше формат. –

0

Это может быть просто typo (или изменение, зависящее от версии), но для меня работает следующее:

set hive.cli.print.headers=true; 

Это «заголовки» вместо «заголовка»

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