したがって、次のコードを実行した後に取得するデータフレームは、正確に私が望む方法です。元のデータフレームと同じデータフレームですが、純粋な数値データを持つすべてのセルには、すべての角かっことスラッシュが削除されています(角かっこは正面のマイナス記号に置き換えられています)。SparkSQL UDFは、列名がUDF( "元の列名")の形式のデータフレームを返すのはなぜですか?
stringModifierIteratorはデータフレームを取り込んでList [Column]を返します。 List [Column]は、コマンドdataframe.select(List [Column]:_ *)のように使用して、新しいデータフレームを作成することができます。
残念ながら、列名はUDF( "元の列名")のようなものに変更されており、なぜその理由がわかりません。
def stringModifierIterator(dataFrame: DataFrame, dataFrameColumns: Array[String], uDF: UserDefinedFunction): List[Column] ={
if(dataFrameColumns.isEmpty){
Nil
} else {
uDF(dataFrame(dataFrameColumns.head)) :: stringModifierIterator(dataFrame, dataFrameColumns.tail, uDF)
}
}
val stringModifierFunction: (String => String) = { s: String => Option(s).map(modifier).getOrElse("0") }
def modifier(inputString: String): String = {
???
}
これは私がdf.showを(使用する場合、列名がどのように見えるかである)
出力を( 'dataframe.show())のように追加できますか? – Shaido
ちょうどそれを私の質問の最下部に追加しました – suleydaman