Spark-SQL ist mir ziemlich klar. Allerdings beginne ich gerade mit der RDD-API von spark. Wie spark apply function to columns in parallel sollte mich langsam schlurft bekommen erlaubt dies weist darauf hin, los fürFunken convert Funken SQL zu RDD API
def handleBias(df: DataFrame, colName: String, target: String = this.target) = {
val w1 = Window.partitionBy(colName)
val w2 = Window.partitionBy(colName, target)
df.withColumn("cnt_group", count("*").over(w2))
.withColumn("pre2_" + colName, mean(target).over(w1))
.withColumn("pre_" + colName, coalesce(min(col("cnt_group")/col("cnt_foo_eq_1")).over(w1), lit(0D)))
.drop("cnt_group")
}
}
In Pseudo-Code: df foreach column (handleBias(column)
So ein minimaler Datenrahmen bis
val input = Seq(
(0, "A", "B", "C", "D"),
(1, "A", "B", "C", "D"),
(0, "d", "a", "jkl", "d"),
(0, "d", "g", "C", "D"),
(1, "A", "d", "t", "k"),
(1, "d", "c", "C", "D"),
(1, "c", "B", "C", "D")
)
val inputDf = input.toDF("TARGET", "col1", "col2", "col3TooMany", "col4")
aber richtig
zur Karte schlägt fehlval rdd1_inputDf = inputDf.rdd.flatMap { x => {(0 until x.size).map(idx => (idx, x(idx)))}}
rdd1_inputDf.toDF.show
Es scheitert mit
java.lang.ClassNotFoundException: scala.Any
java.lang.ClassNotFoundException: scala.Any
Ein Beispiel kann in dieser Frage dargelegt https://github.com/geoHeil/sparkContrastCoding jeweils https://github.com/geoHeil/sparkContrastCoding/blob/master/src/main/scala/ColumnParallel.scala für das Problem zu finden.
Während ich dies in einem ml verwenden möchten .Pipeline und der Ausgabeschritt ist Datenrahmen die das „Schema verloren“ zB Ich muss Mustererkennung verwenden? ist das richtig? Aber es gibt eine ganze Reihe von Spalten ist es eine Möglichkeit zu „schließen“, um ihr etwas (teilweise shcema? –
Ja die 'DF => RDD' Konvertierung das Schema nicht überhaupt leider verwenden (und ich glaube nicht, gibt es Ein guter Weg, um seine Verwendung zu erzwingen. Aber sehen Sie sich mein neues 'Dataset' Beispiel an: Es besteht keine Notwendigkeit, einen Intermediate' Dataframe' zu verwenden und es sieht so aus als ob 'DataSet' die Typen gut leitet (in Spark 2.0) alles, was Sie mit einem DF tun könnte auch mit einem DS) –
@GeorgHeiler (nicht sicher, ob Sie von ^^^^) –