İçinde null
değerlere sahip sütunları düşmesi böyle bir şey deneyebilirsiniz: Bir DataFrame
ile çalışmak için bu jenerik yapılan çünkü yukarıdaki kodda tüm büyük karmaşıklık olduğunu
val df = Seq(
(Option(1),Option(11),None), (Option(2), None, Option(222))
).toDF("col1", "col2", "col3")
// +----+----+----+
// |col1|col2|col3|
// +----+----+----+
// | 1| 11|null|
// | 2|null| 222|
// +----+----+----+
val nullCount = udf[Int,Any](any => if (any == null) 1 else 0)
val columnNullCounts = df.select(
df.columns.map(c => nullCount(col(c)) as c):_*
).agg(
sum(df.columns(0)) as df.columns(0),
df.columns.slice(1, df.columns.length).map(c => sum(c) as c):_*
).collect.apply(0).toSeq.toArray
df.select(df.columns.zip(columnNullCounts).filter(v => v._2 == 0).map(c => col(c._1)):_*)
// +----+
// |col1|
// +----+
// | 1|
// | 2|
// +----+
Not. Sorgularını dinamik olarak oluşturmak için DataFrame.columns
kullanır. Her bir sütunu kontrol etmek istemezseniz, onu hard code değerlerine yeniden yazabilirsiniz - ancak bu size gitmeniz için yeterli olacaktır.
ilgili https://spark.apache.org/docs/latest/ml-features.html – oluies
Kendinizi açıklar mısınız? sorunuz (1) DataFrameNAFunctions kullanabilirsiniz: http://spark.apache.org/docs/latest/api/scala/#org.apache.spark.sql.DataFrameNaFunctions örneğin df.na ile ilgili sorularınız biraz belirsiz –
. drop() – eliasah