Sparkデータフレームで動作するこのScala関数があると想像してください。
class MyClass {
def makeColumnNull(df: DataFrame, columnToMakeNull: String): DataFrame = {
val colType = df.select(columnToMakeNull).schema.head.dataType
df.withColumn(columnToMakeNull, lit(null).cast(colType))
}
}
私はそれをそのように呼びます:
val df = spark.range(0,10).toDF()
val df2 = MyClass.makeColumnNull(df, "id")
これは正常に機能しますが、SparkのAPIと同じように流暢に機能するわけではありません。私がしたいのは、これができるように関数を書き直すことです。
val df2 = df.makeColumnNull("id")
誰か助けてもらえますか?
暗黙のクラスが進むべき道です。私はそれらを使用していくつかのsparkクラスを拡張しました。だからあなたはこれが必要です:
package com.mycompany.utils.spark
import org.apache.spark.sql.DataFrame
import org.apache.spark.sql.functions.lit
object DataFrameExtensions {
implicit class DataFrameWrapper(df: DataFrame) {
def makeColumnNull(columnToMakeNull: String): DataFrame = {
val colType = df.select(columnToMakeNull).schema.head.dataType
df.withColumn(columnToMakeNull, lit(null).cast(colType))
}
}
}
次に、インポートcom.mycompany.utils.spark.DataFrameExtensions._
する必要がありmakeColumnNull()
、任意のDataFrame
オブジェクトに対して呼び出すことができます
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加