2017-10-25 1 views
0

Spark-Version: 2.1Wie ein Datenrahmen Spalte filtern, enthält Array/Struct

Scala Version: 2.11

ich einen Datenrahmen haben mit der folgenden Struktur, bevor es zu schreiben und speichern in Parkett-Datei. Es hat viele andere Spalten, aber ich es kurz zu nur 2 Spalten für Klarheit:

+---+--------------------+ 
|day| table_row  | 
+---+--------------------+ 
| 8|[,129,,,,,J,WENDI...| 
| 8|[_DELETE_THIS_,_D...| 
| 8|[_DELETE_THIS_,_D...| 

... und das Schema sieht wie folgt aus:

 root 
    |-- day: long (nullable = true) 
    |-- table_row: struct (nullable = true) 
    | |-- DATE: string (nullable = true) 
    | |-- ADMISSION_NUM: string (nullable = true) 
    | |-- SOURCE_CODE: string (nullable = true) 
etc.. 

‚table_row‘ hat mehr als 100 Datenelemente und ich habe nur einen Ausschnitt gepostet. Während der Verarbeitung musste ich einige Dummy-Zeilen erstellen, wobei jedes Feld mit "_DELETE_THIS_" gefüllt war. Für jede normale Zeile habe ich 2 Dummy-Zeilen. Jetzt versuche ich, diese Dummy-Zeilen aus dem Dataframe herauszufiltern und nur die gültigen Zeilen zu schreiben, aber ich kann das nicht mit irgendwelchen Mitteln tun. Ich habe ein paar Wege ausprobiert, konnte aber keine richtige Lösung finden. Kann mir jemand dabei helfen?

Dank Qubiter

Antwort

1

können Sie filter-Funktion verwenden. Sie können eine beliebige Feldelement aus table_row nehmen, wie Sie gesagt haben, dass jedes Feld mit _DELETE_THIS_

val finalDF = df.filter($"table_row.DATE" =!= "_DELETE_THIS_") 

Hier $"table_row.DATE" bevölkert ist, wie Sie DATE Element der struct Spalte nennen.

Ich hoffe die Antwort ist hilfreich.

+0

Das funktionierte für mich. Vielen Dank :) – qubiter

Verwandte Themen