输入
+------+------+------+------+
|emp_name|emp_area| dept|zip|
+------+------+------+------+
|ram|USA|"Sales"|805912|
|sham|USA|"Sales"|805912|
|ram|Canada|"Marketing"|805912|
|ram|USA|"Sales"|805912|
|sham|USA|"Marketing"|805912|
+------+------+------+------
期望输出
feature |Top1 name |Top 1 value1|Top2 name|top 2 value|
emp_name ram |3|sham |2
emp_area Usa |4|canada |1
dept sales|3|Marketing|3
zip 805912|5|NA|NA
我一开始是动态地为它们中的每一个生成计数,但无法将它们存储在数据集中
val features=ds.columns.toList
for (e <- features) {
val ds1=ds.groupBy(e).count().sort(desc("count")).limit(5).withColumnRenamed("count", e+"_count")
}
现在,如何将所有值收集到一个Dataframe中并转换为输出?
1条答案
按热度按时间hk8txs481#
这里有一个稍微冗长的方法。你可以
map
每列到一个具有一行的Dataframe,该行对应于所需输出中的行。必要时添加na列。将列名转换为所需的列名,最后执行unionAll
合并Dataframe(每行一个)。