Daten: DataFrame
, die 15 String-Spalten hat.Spark, DataFrame: Alle eindeutigen Zeichenfolgen aus vielen Spalten
Ziel: Erstellen einer Liste, die die verschiedenen Zeichenfolgen in allen 15 Spalten enthält.
Beispiel: Wenn das Wort "Gitarre" einmal oder mehrmals in der ersten Spalte sowie in der vierten Spalte erscheint, muss es einmal in der endgültigen Liste erscheinen.
vorgeschlagene Lösung aber nicht ideal: Eine UDF eine Option ist, alle Spalten verketten in einer neuen Spalt, dann kann ich diese Spalte mit einem CountVectorizer
verarbeiten, die das Vokabular extrahieren. Aber die UDFs sind begrenzt, da sie maximal 10 Eingabeparameter akzeptieren (dh ich kann nicht mehr als 10 Spalten an eine UDF übergeben), also muss diese Lösung zwei UDFs implementieren, die ersten 10 Spalten zu verketten, die zweite die Ausgabe der ersten UDF mit den nächsten 5 Spalten.
Ich bin auf der Suche nach einer effizienteren kompakten Lösung für dieses Problem und allgemeiner eine Lösung für das Problem der begrenzten Anzahl von Eingabeparametern für UDFs.
A Wenige Präzisionen, wenn ich fragen darf: Willst du zu einer Liste (zB Fahrerseite) oder zu einem Datenrahmen sammeln? Ist die Umstellung auf RDD eine Option für Ihren Fall? (Randbemerkung: array_concat + count vectorizer bieten eine gute Lösung für Ihre Frage ich denke, aber das ist, weil Ihr Anwendungsfall von Strings ist, nicht beliebige Typen) – GPI
Kein Problem bei der Arbeit mit DataFrames und RDDs, akzeptiert Array_concat mehr als diese Zahl Säulen? – Rami
Appart, dass es nicht 'array_concat' ist, nur' array', sorry dafür, ja, kann es. Siehe https://stackoverflow.com/questions/35419307/create-array-of-literals-and-columns-from-list-of-strings-in-spark-sql für etwas Ähnliches. Ich suche nach etwas Besserem. – GPI