Erstellen Funke Dataframe aus einer SQL-Abfrage
Ich bin sicher, dies ist eine einfache SQLContext Frage, aber ich finde keine Antwort in der Funke docs oder Stackoverflow
Möchte ich, um einen Funken zu erzeugen Dataframe von einer SQL-Abfrage auf der MySQL -
Ich habe zum Beispiel eine komplizierte MySQL-Abfrage wie
SELECT a.X,b.Y,c.Z FROM FOO as a JOIN BAR as b ON ... JOIN ZOT as c ON ... WHERE ...
und ich will einen Dataframe mit den Spalten X,Y und Z
Ich herausgefunden, wie das laden ganzer Tabellen in Funken, und ich konnte laden Sie alle, und führen Sie dann die Verbindung und-Auswahl. Das ist jedoch sehr ineffizient. Ich möchte nur zum laden der Tabelle generiert, die durch meine SQL-Abfrage.
Hier ist meine derzeitige Annäherung der code, das nicht funktioniert. Mysql-connector hat eine option "dbtable", die verwendet werden können, laden Sie eine ganze Tabelle. Ich hoffe, es ist ein Weg, um eine Abfrage
val df = sqlContext.format("jdbc").
option("url", "jdbc:mysql://localhost:3306/local_content").
option("driver", "com.mysql.jdbc.Driver").
option("useUnicode", "true").
option("continueBatchOnError","true").
option("useSSL", "false").
option("user", "root").
option("password", "").
sql(
"""
select dl.DialogLineID, dlwim.Sequence, wi.WordRootID from Dialog as d
join DialogLine as dl on dl.DialogID=d.DialogID
join DialogLineWordInstanceMatch as dlwim o n dlwim.DialogLineID=dl.DialogLineID
join WordInstance as wi on wi.WordInstanceID=dlwim.WordInstanceID
join WordRoot as wr on wr.WordRootID=wi.WordRootID
where d.InSite=1 and dl.Active=1
limit 100
"""
).load()
Dank
Peter
InformationsquelleAutor user1902291 | 2016-07-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK, hier ist die Antwort...
Fand ich diese hier Bulk-Daten-migration, die durch Spark-SQL
Den parameter dbname kann jede Abfrage eingewickelt in Klammern mit einem alias. Also in meinem Fall, ich brauche, um dies zu tun...
Als erwartet, laden jede Tabelle als eigene Dataframe und fügen Sie Sie in Spark war sehr ineffizient.
InformationsquelleAutor user1902291
Wenn Sie Ihren
table
bereits in Ihrem SQLContext, Sie könnten einfach verwendensql
Methode.Danke. Ich habe bereits gefunden, so laden Sie eine gesamte Tabelle in die Funke. Aber mein problem ist, ich habe eine komplizierte Abfrage-Beitritt viele große Tabellen, und die Auswahl nur ein paar Spalten. Ich hatte gehofft, erstellen Sie ein einfaches dataframe mit nur die ausgewählten Spalten
InformationsquelleAutor Alberto Bonsanto
TL;DR: erstellen Sie einfach einen Blick in Ihre Datenbank.
Detail:
Ich habe eine Tabelle t_city in meiner postgres-Datenbank, auf die ich eine Ansicht erstellen:
In der Funke-shell:
Ergebnis:
InformationsquelleAutor WillemM
mit MYSQL Lesen/laden von Daten so etwas wie unten
schreiben von Daten in die Tabelle, wie unten
erstellen dataframe aus der Abfrage etwas tun, wie unten
InformationsquelleAutor Santhosh Hirekerur
speichern die Ausgabe einer Abfrage, um ein neues dataframe, einfachen Satz ist das Ergebnis gleich zu einer variable:
und jetzt
newDataFrame
ist ein dataframe mit allen dataframe Funktionalitäten zur Verfügung, um es.InformationsquelleAutor Kristian