首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala/列非常慢

Scala/列非常慢
EN

Stack Overflow用户
提问于 2017-09-02 20:05:19
回答 1查看 1K关注 0票数 1

我对scala还是新手(现在大约一周了)

下面的代码是运行在我的8核心笔记本电脑,64位,Win10数据rows有1700行。一个选择需要超过10秒。

观看控制台显示的主要挂起情况如下:

17/09/02 12:23:46 INFO FileSourceStrategy:

“守则”

代码语言:javascript
复制
{

    val major:String =name.substring(0,name.indexOf("_SCORE"))+"_idx1"
    println(major)
    val majors = dfMergedDroppedDeleted
      .select(col(major))
      .collect().toSeq
    println(s"got majors ${majors.size}")
}

这需要几毫秒(根据hibernate、r、mysql等方面的经验),我假设我的星火配置有问题吗?

任何建议都将受到欢迎。

挂起前的完整控制台输出如下:

1637_1636_1716_idx1 1637_1636_1716_idx2 17/09/02 12:23:08信息ContextCleaner:清洁累加器765 17/09/02 12:23:08信息ContextCleaner:清洁蓄电池763 17/09/02 12:23:08信息BlockManagerInfo:删除broadcast_51_piece0在192.168.0.13:62246内存(大小: 113.7 KB,空闲: 901.6 MB) 17/09/02 12:23:08信息ContextCleaner:清洁蓄电池761 17/09/02 12:23:08信息ContextCleaner:清洁累加器764 17/09/02 12:23:08信息ContextCleaner:清洁蓄电池762 17/09/02 12:23:08信息ContextCleaner:清洁累加器766 17/09/02 12:23:08信息BlockManagerInfo:删除broadcast_50_piece0在192.168.0.13:62246内存(大小:20.7KB,空闲: 901.6 MB) 17/09/02 12:23:08 INFO FileSourceStrategy:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-02 20:45:21

将数据存储在缓存中会产生很大的不同。

代码语言:javascript
复制
val dfMergedDroppedDeletedCached:DataFrame=dfMergedDroppedDeleted.cache()

但是,缓存过程本身是缓慢的,因此只有当您执行多个操作时,这才会有回报。

UPDATE Credit Maharjan在一篇评论中写道:

不选择耗时部分。select在本质上是分布式的,将在执行器中的每个本地数据中执行。时间消耗部分是收集。收集功能收集驱动节点中的所有数据。这需要很长时间。这就是为什么收集总是被建议不要使用,如果必要的话,使用它的最低限度。

我已将查询更改如下:

代码语言:javascript
复制
          val majorstr:String = dfMergedDroppedDeletedCached.filter(dfMergedDroppedDeletedCached(major).isNotNull)
            .select(col(major))
            .limit(1)
            .first().getString(0)

不完全是Oracle的速度,但比使用collect快得多

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46017721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档