ich pyspark verwende und ich habe zwei Datenrahmen wie folgt aus:die nächste Zeit zwischen zwei Tabellen in Funken finden
user time bus
A 2016/07/18 12:00:00 1
B 2016/07/19 12:00:00 2
C 2016/07/20 12:00:00 3
bus time stop
1 2016/07/18 11:59:40 sA
1 2016/07/18 11:59:50 sB
1 2016/07/18 12:00:05 sC
2 2016/07/19 11:59:40 sB
2 2016/07/19 12:00:10 sC
3 2016/07/20 11:59:55 sD
3 2016/07/20 12:00:10 sE
Jetzt möchte ich bei denen wissen, die Anwenderberichte gemäß der Busnummer stoppen und die nächste Zeit in der zweiten Tabelle.
Zum Beispiel in Tabelle 1, berichtet Benutzer A am 2016/07/18 12:00:00 und er ist auf Bus Nr. 1, und nach der zweiten Tabelle gibt es drei Datensätze von Bus Nr. 1 , aber die nächste Zeit ist 2016/07/18 12:00:05 (der dritte Datensatz), so dass der Benutzer jetzt in SC ist.
Die gewünschte Ausgabe wie folgt sein sollte:
user time bus stop
A 2016/07/18 12:00:00 1 sC
B 2016/07/19 12:00:00 2 sC
C 2016/07/20 12:00:00 3 sD
ich die Zeit in Zeitstempel übertragen haben, so dass das einzige Problem ist, das am nächsten Zeitstempel zu finden, wo die Busnummer eqaul ist.
Da ich sql jetzt nicht kenne, habe ich versucht, die map-Funktion zu verwenden, um die nächste Zeit und ihren Stopp zu finden, was bedeutet, dass ich sqlContext.sql in der Map-Funktion verwenden muss, und funke nicht scheinen Zulassen:
Ausnahme: Scheint, dass Sie versuchen, SparkContext von einer Übertragungsvariable, einer Aktion oder einer Transformation zu verweisen. SparkContext kann nur für den Treiber verwendet werden, nicht für Code, der auf Workern ausgeführt wird. Weitere Informationen finden Sie unter SPARK-5063.
Also wie kann ich eine SQL-Abfrage schreiben, um die richtige Ausgabe zu erhalten?
Es war sehr nett von Ihnen, mein Problem zu lösen, vielen Dank! – Finn
Gern geschehen !! –