2013-02-28 15 views
9

Używam skryptu rój na Amazon EMR do analizy niektórych danych.Dodawanie nagłówków kolumn do zestawu wyników ula

I przesyłam dane wyjściowe do wiadra Amazon s3. Teraz wyniki skryptu w hodzie nie zawierają nagłówków kolumn.

Próbowałem również za pomocą tego:

set hive.cli.print.header=true; 

Ale to nie pomaga. Czy możesz mi pomóc?

+0

Chcesz nagłówki kolumn ujęte w jakimś pliku wyjściowego po prostu zobaczyć je w interfejs wiersza poleceń? – www

+0

@Wawrzniec Chcę je w pliku wyjściowym. – Sam

Odpowiedz

3

Sądzę, że bezpośrednia droga jest nadal niemożliwa (HIve: writing column headers to local file?). Niektóre rozwiązaniem byłoby wynikiem eksport DESCRIBE table_name do pliku:

$ hive -e 'DESCRIBE table_name' > file 

I napisać skrypt, który dodać nazwy kolumn w pliku danych. GL!

2

Wpadłem dziś na ten problem i udało mi się uzyskać to, czego potrzebowałem, wykonując UNION ALL pomiędzy pierwotnym zapytaniem a nowym zapytaniem fikcyjnym, które tworzy wiersz nagłówka. Dodałem kolumnę sortowania w każdej sekcji i ustawiłem nagłówek na 0, a dane na 1, aby móc sortować według tego pola i upewnić się, że wiersz nagłówka wyszedł na wierzch.

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 

Jest trochę nieporęczny, ale przynajmniej można uzyskać to, czego potrzebujesz za pomocą jednego zapytania.

Mam nadzieję, że to pomoże!

8

Dokładnie jak wygląda twój skrypt?

Czy dane wyjściowe ze skryptu z gałęzi zawierają dane nagłówka? Czy jest on następnie tracony podczas kopiowania danych wyjściowych do kubełka s3?

Jeśli mógłbyś podać więcej szczegółów na temat tego, co dokładnie robisz, byłoby to pomocne.

Bez znajomości tych szczegółów, tutaj jest coś, co możesz spróbować.

Tworzenie skryptu ula następująco:

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

Następnie uruchom skrypt:

$ hive -f hive_script.hql > hive_output 

Następnie skopiuj swoje wyjście do s3 wiadra

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

Witam, sqoop pobieranie danych z oracle, ale nie schematu/nagłówków. Chcę uzyskać schemat jako nagłówek. Na przykład: imię i nazwisko, wiek, lokalizacja venu, 31, Banlgaore srinu, 32, Hyderabad ..... ... llike to.Jak uzyskać schemat w postaci nagłówków, a nie taki format. Oracle na S3 (w sqoop), .. nie na lokalny .. na s3 jak powyższy format. –

0

To może być tylko literówka (lub zmiana zależna od wersji), ale dla mnie działa następująca:

set hive.cli.print.headers=true; 

To „nagłówki” zamiast „nagłówku”

Powiązane problemy