【发布时间】:2015-02-05 08:20:35
【问题描述】:
我在 hdfs 中有 3 个文本文件,我正在使用 spark sql 读取它们并将它们注册为表。之后,我做了将近 5-6 次操作——包括 joins 、 group by 等。整个过程几乎不需要 6-7 秒。 (源文件大小 - 3 GB,近 2000 万行)。 作为我计算的最后一步,我希望在我的最终 rdd 中只有 1 条记录——在下面的代码 sn-p 中命名为 acctNPIScr。
我的问题是,当我尝试通过注册为表并从表中打印记录或通过此方法打印此 rdd 时 - acctNPIScr.map(t => "Score: " + t(1)).collect ().foreach(println)。这需要很长时间 - 打印 1 条记录几乎需要 1.5 分钟。
如果我在打印时做错了什么,请有人帮助我。从 schemardd 打印最终结果的最佳方法是什么?
.....
val acctNPIScr = sqlContext.sql(""SELECT party_id, sum(npi_int)/sum(device_priority_new) as npi_score FROM AcctNPIScoreTemp group by party_id ")
acctNPIScr.registerTempTable("AcctNPIScore")
val endtime = System.currentTimeMillis()
logger.info("Total sql Time :" + (endtime - st)) // this time is hardly 5 secs
println("start printing")
val result = sqlContext.sql("SELECT * FROM AcctNPIScore").collect().foreach(println)
//acctNPIScr.map(t => "Score: " + t(1)).collect().foreach(println)
logger.info("Total printing Time :" + (System.currentTimeMillis() - endtime)) // print one record is taking almost 1.5 minute
【问题讨论】:
标签: sql apache-spark