当前位置: 首页 > 知识库问答 >
问题:

用Spark SQL打印数据耗时长

阮星火
2023-03-14
..... 
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 

共有1个答案

曾航
2023-03-14

这里的关键是所有的火花转换都是懒惰的。只有操作才会导致对转换进行评估。

//这个时间几乎不到5秒

这是因为您还没有强制对转换进行评估。直到这里map(t=>“score:”+t(1)).collect()才发生这种情况。collect是一个操作,因此此时将处理整个数据集。

 类似资料:
  • 对于这件事,我将非常感激任何帮助。或者其他开源库使用PHP生成报告的任何建议

  • 但是,下面的代码将数据发送到打印机,当数据到达打印机队列时,它返回时带有我认为可以通过指定风味来克服这个问题,但事实并非如此

  • 我有一台爱普生热敏打印机,现在我要打印一些足够长的收据,我使用爱普生提供的代码样本。代码如下所示,现在的问题是,当收据超过一定长度(约30cm)时,打印机会停止并剪切收据,如下图所示。我如何打印长收据没有自动剪切。

  • 我是Python的新手,我试图使用Matplotlib从我的PC的串行端口绘制一些数据,这些数据是从外部DVM(数字电压表)获取的,数据格式很简单,如:10.01 9.97 9.95 10.02......我可以使用Matplotlib制作一些静态图形或图表,但我不知道如何在实时模式下绘制数据图表。我只是想看到一个折线图不断更新,x轴是不需要的。我已经通过几个代码(代码中的变量v)获得了串行端口数

  • 你好,我有一个数据框,日期作为索引,股份作为列,我想用日期作为x轴绘制一个特定的股份。我要绘制的系列是:df['APPL']=