Ich habe eine CSV-Datei und seine Spalte enthalten kann '' fett in Probeerstellen hive Tabelle und Lastdaten Zitiert CSV
Probe
23, "wir sind", 100
23, "Sie sind", 100
Anforderung ist Laden in eine Hive-Tabelle (col1 int, col2-Array, col3 int);
Ich habe eine CSV-Datei und seine Spalte enthalten kann '' fett in Probeerstellen hive Tabelle und Lastdaten Zitiert CSV
Probe
23, "wir sind", 100
23, "Sie sind", 100
Anforderung ist Laden in eine Hive-Tabelle (col1 int, col2-Array, col3 int);
Wenn Ihre Hive-Version 0.14 und höher ist, können Sie CSV Serde (https://cwiki.apache.org/confluence/display/Hive/CSV+Serde) verwenden. DEFAULT_QUOTE_CHARACTER für dieses SerDe ist "
Wenn Sie frühere Hive-Version haben, versuchen Sie diese serde manuell ist https://github.com/ogrodnek/csv-serde
Die Sache hinzufügen Serde Ihr Array als String zu behandeln. Das ist nicht sehr großes Problem, können Sie konvertieren Spalte in einem Array, wenn dabei wählen oder erstellen sie weitere Ansicht für die gleichen
Beispiel:..
DROP TABLE my_table;
CREATE EXTERNAL TABLE my_table(col1 int , col2 string, col3 int)
row format SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
stored as textfile;
ich die Textdatei erstellt und es in der Tabelle Standort setze
Dateiinhalt:
23,"we,are",100
23,"you,are",100
nun die Daten erhalten:
hive> select col1, split(col2,",") as col2, col3 from my_table;
OK
23 ["we","are"] 100
23 ["you","are"] 100
Alternativ können Sie eine Ansicht erstellen:
hive> create view my_table_view as select col1, split(col2,",") as col2, col3 from my_table;
OK
Time taken: 0.427 seconds
hive> select * from my_table_view;
OK
23 ["we","are"] 100
23 ["you","are"] 100
Time taken: 0.369 seconds, Fetched: 2 row(s)
--Select Array-Elemente:
hive> select col1,col2[0] as col2_1, col2[1] as col2_2, col3 from my_table_view;
OK
23 we are 100
23 you are 100
Time taken: 0.09 seconds, Fetched: 2 row(s)
könnten Sie bitte Probe ddl für Tabelle und Laden von Daten geben ... –
Fertig. Bitte sehen Sie meine verbesserte Antwort – leftjoin
Hinweis, auch wenn Sie Tabelle als Array enthalten wird, wird sowieso serde es als Zeichenfolge behandeln. Dies funktioniert genauso: CREATE EXTERNAL TABLE my_table (col1 int, col2 array, col3 int) ... –
leftjoin