2016-04-17 8 views
0

Mein Problem ist ich habe versucht, dies auf meinem lokalen Rechner mit hadoop und AWS EC2 zu überprüfen, gibt es keine Rückkehr von Datensätzen in der folgenden Abfrage. Jetzt ist das folgende Skript korrekt und ich weiß das für eine Tatsache?Warum hat die Teildatei nichts in HIVE-Ausgabe

Mein quesiton ist, warum wir keine Ergebnisse in der Teiledatei nach dem Job sehen ist abgeschlossen

DROP TABLE IF EXISTS batting; 
CREATE EXTERNAL TABLE IF NOT EXISTS batting(id STRING, year INT, team STRING, 
league STRING, games INT, ab INT, runs INT, hits INT, doubles INT, triples 
INT, homeruns INT, rbi INT, sb INT, cs INT, walks INT, strikeouts INT, ibb 
INT, hbp INT, sh INT, sf INT, gidp INT) ROW FORMAT DELIMITED FIELDS 
TERMINATED BY ',' LOCATION 's3://hive-test1/batting'; 
DROP TABLE IF EXISTS master; 
CREATE EXTERNAL TABLE IF NOT EXISTS master(id STRING, byear INT, bmonth INT, 
bday INT, bcountry STRING, bstate STRING, bcity STRING, dyear INT, dmonth 
INT, dday INT, dcountry STRING, dstate STRING, dcity STRING, fname STRING, 
lname STRING, name STRING, weight INT, height INT, bats STRING, throws 
STRING, debut STRING, finalgame STRING, retro STRING, bbref STRING) ROW 
FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION 
's3://hive-test1/master'; 
INSERT OVERWRITE DIRECTORY 's3://hive-test1/output' SELECT n.fname, 
n.lname, x.year, x.runs FROM master n JOIN (SELECT b.id as id, b.year as 
year, b.runs as runs FROM batting b JOIN (SELECT year, max(runs) AS best  FROM 
batting GROUP BY year) o WHERE b.runs=o.best AND b.year=o.year) x ON 
x.id=n.id ORDER BY x.runs DESC; 

Antwort

1

Wenn Sie Hive die beiden Tabellen zu erstellen, alles, was Sie tun, ist eine Definition zu schaffen Name, Feld und deren Typen, Ort und so weiter. Create macht nichts mit Daten.

Basierend auf Ihrer ähnlichen Frage früher, ich denke, Sie haben einige vorhandene HDFS-Dateien im CSV-Format, die die Daten enthalten, die Sie abfragen möchten, oder?

Bevor Sie das tun, schlage ich vor, dass Sie manuell einen Datensatz in jede Tabelle einfügen, wie INSERT INTO batting (id, year, team,league) VALUES ('1', 2016, 'Red Sox', 'AL Easr');. Fragen Sie dann die Tabelle mit SELECT * FROM batting; ab, um zu bestätigen, dass Sie einige Werte gespeichert haben.

Jetzt haben Sie das nächste Problem zu lösen: Wie importiere ich eine HDFS-Datei in eine Hive-Tabelle? Sie können dies mit Hilfe von Hue tun, wenn Sie es installiert haben. Falls nicht, schlage ich vor, dass Sie Google verwenden, um eine Antwort auf diese Frage zu finden.

In der Regel haben Sie drei Probleme zu lösen:

  1. Erstellen von Tabellen in Hive so die Hive-Megastor kennen ihre Struktur. Dies wird Datendefinition langrors oder DDL in SQL genannt.
  2. Importieren und Lin Ihre vorhandenen CSV-Dateien als Dateien auf HDFS zu ihren entsprechenden Hive-Tabellen
  3. Abfrage der Tabellen mit SQL wahrscheinlich mit SELECT und JOIN, dies heißt Datenbearbeitungssprache oder DML in SQL.

Jeder ist ein anderer Schritt. Lassen Sie sie nacheinander arbeiten, und Sie werden ein komplexes Problem lösen und es in kleinere Probleme aufteilen, die leichter zu verstehen sind.

Verwandte Themen