我想使用Spark Sql在数据框的每一列上执行分组依据。数据框将具有大约1000列。
我尝试遍历数据帧中的所有列,并对每列执行groupBy。但是程序执行了超过1.5小时
val df = sqlContext
.read
.format("org.apache.spark.sql.cassandra")
.options(Map( "table" -> "exp", "keyspace" -> "testdata"))
.load()
val groupedData= channelDf.columns.map(c => channelDf.groupBy(c).count().take(10).toList)
println("Printing Dataset :"+ dataset)
如果我在“数据框”中有“示例名称和金额”列,则输出应类似于
GroupBy在列名:
Name Count
Jon 2
Ram 5
David 3
按金额分组的分组依据:
Amount Count
1000 4
2525 3
3000 3
我希望每一列都按结果分组。
答案 0 :(得分:0)
在这里我能看到的唯一方法是在读取df
之后直接对其进行缓存。
不幸的是,每个计算都是独立的,您必须要做,没有“解决方法”。
类似的东西可以加快一点,但速度却不那么快:
val df = sqlContext
.read
.format("org.apache.spark.sql.cassandra")
.options(Map( "table" -> "exp", "keyspace" -> "testdata"))
.load()
.cache()