Der Versuch, einen Funken Datenrahmen mit mehreren zusätzlichen Spalten zu erstellen, basierend auf Bedingungen wie dieseWie können neue Spalten basierend auf Bedingungen hinzugefügt werden (ohne JaninoRuntimeException oder OutOfMemoryError gegenüberzustellen)?
df
.withColumn("name1", someCondition1)
.withColumn("name2", someCondition2)
.withColumn("name3", someCondition3)
.withColumn("name4", someCondition4)
.withColumn("name5", someCondition5)
.withColumn("name6", someCondition6)
.withColumn("name7", someCondition7)
Ich bin konfrontiert mit folgender Ausnahme bei mehr als 6 .withColumn
Klauseln hinzugefügt
org.codehaus.janino.JaninoRuntimeException: Code of method "()V" of class "org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIterator" grows beyond 64 KB
Dieses Problem wurde auch an anderer Stelle berichtet, zB
- Spark ML Pipeline Causes java.lang.Exception: failed to compile ... Code ... grows beyond 64 KB
- https://github.com/rstudio/sparklyr/issues/264
Gibt es eine Eigenschaft in Funken, wo ich die Größe konfigurieren können?
bearbeiten
Wenn noch mehr Spalten erstellt werden, z. rund 20 erhalte ich nicht mehr die vorgenannte Ausnahme, sondern die folgende Fehlermeldung nach 5 Minuten Warte erhalten:
java.lang.OutOfMemoryError: GC overhead limit exceeded
Was ich will ist eine Rechtschreibung/Fehlerkorrektur durchzuführen. einige einfache Fälle könnten leicht über eine Karte & Ersatz in einem UDF behandelt werden. Dennoch bleiben mehrere andere Fälle mit mehreren verketteten Zuständen übrig.
Ich werde auch dort folgen: https://issues.apache.org/jira/browse/SPARK-18532
Ein minimales reproduzierbares Beispiel finden Sie hier https://gist.github.com/geoHeil/86e5401fc57351c70fd49047c88cea05