Ich habe eine Beispielanwendung arbeiten zum Lesen von CSV-Dateien in einen Datenrahmen. Der Datenrahmen kann mit der Methode df.saveAsTable(tablename,mode)
in einer Hive-Tabelle im Parkettformat gespeichert werden.Speichern Sie Spark-Datenframe als dynamische partitionierte Tabelle in Hive
Der obige Code funktioniert gut, aber ich habe so viele Daten für jeden Tag, dass ich die Hive-Tabelle basierend auf dem creationdate (Spalte in der Tabelle) dynamisch partitionieren möchte.
gibt es eine Möglichkeit, den Datenrahmen dynamisch zu partitionieren und ihn im Stock-Warehouse zu speichern. Unterlassen Sie die Hard-Codierung der INSERT-Anweisung unter Verwendung von hivesqlcontext.sql(insert into table partittioin by(date)....)
. How to save DataFrame directly to Hive?
jede Hilfe ist sehr willkommen:
Frage kann als Erweiterung zu berücksichtigen.
diese Partitionby Methode versucht. Es funktioniert nur auf RDD-Ebene. Sobald der Datenrahmen erstellt ist, sind die meisten Methoden DBMS-gestylt, z. groupby, orderby, aber sie dienen nicht dazu, in verschiedenen Partitionsordnern auf Hive zu schreiben. – Chetandalal
Ok, also konnte ich es mit 1.4 Version ausarbeiten. df.write(). mode (SaveMode.Append) .partitionBy ("Datum"). saveAsTable ("Tabellenname"); . Dies ändert jedoch mein Datumsfeld in einen ganzzahligen Wert und entfernt das tatsächliche Datum. z.B. Es gibt 9 eindeutige Daten in der Spalte, aber sie sind jetzt als 1,2,3 gespeichert .... und Ordnername ist date = 1,2,3, ... statt date = 20141121. Lass mich wissen, ob es einen Weg gibt, dies zu tun. – Chetandalal
@ subramaniam-ramasubramanian: pls antworten auf OP s frage als antwort statt editieren bestehende antwort –