2017-11-09 14 views
0

Wie speichert man ein Pyspark DataFrame Objekt in einer Hive-Tabelle, "primary12345" ist eine Hive-Tabelle? bin den Code unten mit masterDataDf Objekt ein Datenrahmen istPyspark Datenrahmen zu Hive Tabelle

masterDataDf.write.saveAsTable("default.primary12345") 

unten Fehler bekommen

: java.lang.RuntimeException: Tabellen mit SqlContext erstellt wurden, müssen zeitlich begrenzt sein. Verwenden Sie stattdessen einen HiveContext.

+0

Mögliches Duplikat von [Wie kann DataFrame direkt in Hive gespeichert werden?] (Https: // stackoverflow .com/questions/30664008/how-to-save-Datenframe-direkt-zu-Bienenstock) – desertnaut

Antwort

2

Sie können eine temporäre Tabelle erstellen.

masterDataDf.createOrReplaceTempView("mytempTable") 

Dann können Sie eine einfache Hive-Anweisung verwenden, um eine Tabelle zu erstellen und die Daten aus Ihrer temporären Tabelle auszugeben.

sqlContext.sql("create table primary12345 as select * from mytempTable"); 

ODER

wenn Sie wollen HiveContext verwendet Sie müssen/erstellen HiveContext

import org.apache.spark.sql.hive.HiveContext; 

HiveContext sqlContext = new org.apache.spark.sql.hive.HiveContext(sc.sc()); 

dann direkt Datenrahmen speichern oder die Spalten auswählen, wie hive Tabelle zu speichern

masterDataDf.write().mode("overwrite").saveAsTable("default.primary12345 "); 
+0

Dank dieser Code funktioniert, aber ich muss zwei weitere Konfigurationen der Spark-Anwendung –

+1

hinzufügen, wenn es hilfreich für Sie als Sie die ANS akzeptieren können . –

Verwandte Themen