【发布时间】:2018-03-25 20:00:12
【问题描述】:
所以我在运行以下代码后得到的数据帧正是我想要的样子。它与原始数据框相同,但所有具有纯数字数据的单元格都删除了所有括号和斜杠(括号被前面的减号替换)。
stringModifierIterator 接收一个数据框并返回一个 List[Column]。然后可以像在命令 dataframe.select(List[Column]: _*) 中一样使用 List[Column] 来创建新的数据框。
不幸的是,列名已更改为 UDF("Original Column Name") 之类的名称,我不知道为什么。
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())? -
刚刚添加到我的问题的底部
标签: scala apache-spark dataframe apache-spark-sql user-defined-functions