【问题标题】:spark times out when connecting to cassandra连接到 cassandra 时火花超时
【发布时间】:2015-09-22 22:08:14
【问题描述】:

我在 cassandra 集群中有很多数据,有 2 台节点机器和 1 台种子机器。我有一个 spark 主节点和 3 个从节点。每台机器都是 8 GB 机器双核。因此,如果我的数据约为 2,00,000 ,并且当我对数据框执行 rdd.count 时,会花费大量时间,有时甚至会超时。

val tabledf = _sqlContext
 .read
 .format("org.apache.spark.sql.cassandra")
 .options(Map( "table" -> "events", "keyspace" -> "sams"))
 .load

tabledf.registerTempTable("tempdf");
val rdd = _sqlContext.sql("select * from tempdf");
val count = rdd.count.toInt

我怎样才能最小化这个计数时间? 我已经准备好添加更多的工作机器,但它会有什么不同吗?

【问题讨论】:

    标签: scala cassandra apache-spark


    【解决方案1】:

    最简单的解决方案是缓存输入DataFrame

    _sqlContext.cacheTable("tempdf")
    

    否则您必须将所有数据全部传输以执行简单计数。

    【讨论】:

    • 如果我没记错的话,我猜缓存会请求加载来自 cassandra 的所有数据。
    • 不缓存。任何将使用它的动作或转换都是。但是您已经传输了相同数量的行来进行简单的计数。
    • 那么缓存表的计数会和没有缓存表的时间相同吗?
    • 那种。加载和计数的总时间可以更长,但计数本身应该更快。
    • 您能否接受答案或解释为什么它对您不起作用以便可以改进?谢谢。
    猜你喜欢
    • 2016-09-06
    • 2016-12-09
    • 2018-08-18
    • 2016-07-30
    • 2019-06-01
    • 1970-01-01
    • 2016-09-23
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多