问题描述
嗨,我想编写java方法将我的列转置为行。到目前为止,我主要在scala工作,所以不确定在Java中爆炸和seq的工作原理。这里是我在网上找到的scala代码..有人可以帮我将其转换为java:
val (cols,types) = transDF.dtypes.filter{ case (c,_) => !transBy.contains(c)}.unzip
require(types.distinct.size == 1)
val kvs = explode(array(
cols.map(c => struct(lit(c).alias("column_name"),col(c).alias("column_value"))): _*
))
val byExprs = transBy.map(col(_))
transDF
.select(byExprs :+ kvs.alias("_kvs"): _*)
.select(byExprs ++ Seq($"_kvs.column_name",$"_kvs.column_value"): _*)
}
在这里,我找到了代码:http://bailiwick.io/2017/10/21/transpose-data-with-spark/ 非常感谢,
p.s:如果不允许此问题,请删除
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)