使用Spark-SQL的渐进式直方图

时间:2015-06-03 08:33:20

标签: apache-spark apache-spark-sql

我写了一个小的Scala + Spark代码,它读取一个大的CSV文件并计算所有列对直方图((col1,col1),(col1,col2),(col1,col3)的单独直方图等) ,并将结果逐步存储在数据库(Redis)上供其他应用程序使用。

我可以使用Spark-SQL做类似的事情吗? 我能够将数据存入Dataframe并计算直方图,但我只得到最终结果。

数据可能非常大,所以我希望其他应用程序能够在计算直方图的同时处理部分结果(N行的直方图,其中N是数字到目前为止Spark能够处理。)

编辑: 我到目前为止的代码示例:

val params = Map("url" -> "jdbc:vertica:someAddress", "dbtable" -> "schema.mytable")
val jdbc = sqlContext.load("jdbc", params)
val columns = jdbc.columns
val columnPairs = scala.collection.mutable.ArrayBuffer[(String, String)]()
for (i <- 0 to columns.size-1){
    for (j <- i to columns.size-1){
        columnPairs += ((columns(i), columns(j)))
    }
}
val histograms = columnPairs.map{case(first, second) => 
    enter code herejdbc.groupBy(first, second).count().collect()}
histograms.foreach(histogram => mergeToRedis(histogram))

这样它的列基于,它完成一个列对,然后将其保存到数据库。 我希望它是基于行的,需要几行,为所有可能的对生成直方图,合并到数据库并继续下一批。

0 个答案:

没有答案