2013-02-28 3 views
9

Ich verwende ein Hive-Skript auf Amazon EMR, um einige Daten zu analysieren.Hinzufügen von Spaltenüberschriften zum Hive-Ergebnissatz

Und ich übertrage die Ausgabe auf Amazon S3 Eimer. Jetzt enthalten die Ergebnisse des Hive-Skripts keine Spaltenüberschriften.

Ich habe auch schon versucht, diese mit:

set hive.cli.print.header=true; 

Aber es hilft nicht. Kannst du mir helfen?

+0

Wollen Sie die Spaltenüberschriften in irgendeiner Ausgabedatei enthalten von sehen, wie sie nur in Kommandozeilen-Schnittstelle? – www

+0

@Wawrzniec Ich möchte sie in der Ausgabedatei. – Sam

Antwort

3

Ich denke, dass direkte Weg ist immer noch unmöglich (HIve: writing column headers to local file?). Einige Lösung wäre Exportergebnis von DESCRIBE table_name sein in Datei:

$ hive -e 'DESCRIBE table_name' > file 

Und ein Skript schreiben, die Spaltennamen in der Datendatei hinzuzufügen. GL!

2

Ich lief dieses Problem heute und war in der Lage zu bekommen, was ich brauchte, indem Sie eine UNION ALL zwischen der ursprünglichen Abfrage und einer neuen Dummy-Abfrage, die die Kopfzeile erstellt. Ich fügte eine Sortierspalte für jeden Abschnitt hinzu und setzte den Header auf 0 und die Daten auf 1, damit ich nach diesem Feld sortieren und sicherstellen konnte, dass die Kopfzeile an der Spitze herauskam.

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 

Es ist ein wenig sperrig, aber zumindest können Sie bekommen, was Sie mit einer einzigen Abfrage benötigen.

Hoffe, das hilft!

8

Genau wie sieht Ihr Bienenstock-Skript aus?

Sind in der Ausgabe Ihres Hive-Skripts die Headerdaten enthalten? Geht es dann verloren, wenn Sie die Ausgabe in Ihren s3-Bucket kopieren?

Wenn Sie mehr Details über genau das, was Sie tun, bieten könnten, wäre das hilfreich.

Ohne diese Details zu kennen, hier ist etwas, was Sie versuchen könnten.

Ihre hive Skript erstellen wie folgt:

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

Dann wird Ihr Skript ausführen:

$ hive -f hive_script.hql > hive_output 

Dann ist Ihre Ausgabe an Ihren s3 Eimer kopieren

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

Hallo, sqoop Daten von Oracle erhalten, aber nicht Schema/Header. Ich möchte ein Schema als Header bekommen. Zum Beispiel Name, Alter, Standort Venu, 31, Banlgaore Srinu, 32, Hyderabad ..... like this.Wie man das Schema in Form von Überschriften erhält, nicht wie dieses Format. Oracle zu S3 (in sqoop), .. nicht zu lokalen .. zu s3 wie oben genanntes Format. –

0

Es könnte nur eine sein Tippfehler (oder eine versionsabhängige Änderung), aber Folgendes funktioniert für mich:

set hive.cli.print.headers=true; 

Es ist „Header“ anstelle von „header“

Verwandte Themen