where-Klausel funktioniert nicht in der Funke sql-dataframe
Habe ich einen dataframe enthält 3 Spalten : PLZ, lat, lng
Wählen Sie die lat und lng Werte where zip = 00650
So, ich habe versucht mit :
sqlContext.sql("select lat,lng from census where zip=00650").show()
Aber es ist wieder ArrayOutOfBound Ausnahme, weil es keine Werte.
Wenn ich entfernen Sie die where-Klausel, es läuft gut.
Kann mir bitte jemand erklären, was ich falsch mache ?
Update:
dataframe schema:
root
|-- zip: string (nullable = true)
|-- lat: string (nullable = true)
|-- lng: string (nullable = true)
Ersten 10 Zeilen sind :
+-----+---------+-----------+
| zip| lat| lng|
+-----+---------+-----------+
|00601|18.180555| -66.749961|
|00602|18.361945| -67.175597|
|00603|18.455183| -67.119887|
|00606|18.158345| -66.932911|
|00610|18.295366| -67.125135|
|00612|18.402253| -66.711397|
|00616|18.420412| -66.671979|
|00617|18.445147| -66.559696|
|00622|17.991245| -67.153993|
|00623|18.083361| -67.153897|
|00624|18.064919| -66.716683|
|00627|18.412600| -66.863926|
|00631|18.190607| -66.832041|
|00637|18.076713| -66.947389|
|00638|18.295913| -66.515588|
|00641|18.263085| -66.712985|
|00646|18.433150| -66.285875|
|00647|17.963613| -66.947127|
|00650|18.349416| -66.578079|
können Sie zeigen, was ist das schema Ihrer dataframe mit
dataFrame.printSchema()
root |-- zip: string (nullable = true) |-- lat: string (nullable = true) |-- lng: string (nullable = true)
InformationsquelleAutor Ishan | 2017-02-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie Sie sehen können in Ihrem schema
zip
ist der TypString
, so dass deine Abfrage sollte so etwas wie diesesUpdate:
Wenn Sie
Spark 2
dann können Sie dies tun:Ausgabe:
Gleichen Fehler mit der aktualisierten version auch - ArrayIndexOutOfBound. Ich denke, das problem ist mit den Daten, aber die Zeilen sind wie :
00650,18.349416, -66.578079
was ich nicht glaube, ist falsch.können Sie nur drucken Sie das dataframe 10 Zeilen und zeigen Sie es.
haben Sie versucht, diese
dataFrame.select("*").where(dataFrame("zip") === "00650").show()
??wenn Sie mit dieser Verwendung
spark-shell
dann können SiedataFrame.where($"zip" === "00650").show()
InformationsquelleAutor Prasad Khode
Ich mein Problem gelöst mit RDD eher, dass DataFrame. Er gab mir die gewünschten Ergebnisse :
InformationsquelleAutor Ishan