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

如何决定Spark应用程序的性能是否接近最大值(对于给定的内核和内存)?

公西星海
2023-03-14

我们在2节点集群中使用Cassandra 3.5和Spark 1.6.1(每个节点8个核和16G内存)。

下面是Cassandra表

CREATE TABLE schema.trade (
symbol text,
date int,
trade_time timestamp,
reporting_venue text,
trade_id bigint,
ref_trade_id bigint,
action_type text,
price double,
quantity int,
condition_code text,
PRIMARY KEY ((symbol, date), trade_time, trade_id)
) WITH compaction = {'class' : 'DateTieredCompactionStrategy', 'base_time_seconds' : '3600', 'max_sstable_age_days' : '93'};
void getPercentageOfVolume(String symbol, Integer date, Timestamp timeFrom, Timestamp timeTill, Integer barWidth) {
    char MILLISECOND_TO_MINUTE_MULTIPLIER = 60_000;
    LOG.info("start");
    JavaPairRDD<Tuple2, Integer> counts = javaFunctions(sparkContext).cassandraTable("schema", "trade")
            .filter(row ->
                        row.getString("symbol").equals(symbol) && row.getInt("date").equals(date) &&
                        row.getDateTime("trade_time").getMillis() >= timeFrom.getTime() &&
                        row.getDateTime("trade_time").getMillis() < timeTill.getTime())
            .mapToPair(row ->
                new Tuple2<>(
                    new Tuple2(
                            new Timestamp(
                                    (row.getDateTime("trade_time").getMillis() / (barWidth * MILLISECOND_TO_MINUTE_MULTIPLIER)) * barWidth * MILLISECOND_TO_MINUTE_MULTIPLIER
                            ),
                            row.getString("reporting_venue")),
                    row.getInt("quantity")
                )
            ).reduceByKey((a, b) -> a + b);
    LOG.info(counts.collect().toString());
    LOG.info("finish");
}

32.5秒正常吗?

共有1个答案

欧阳玺
2023-03-14

我认为CPU和/或内存使用量的%%是一个起点。如果你的核心没有得到充分利用,就意味着你的过程不够并行。内存大小取决于您的数据,但通常使用更多的RAM而不是返回IO。

 类似资料:
  • 下面是使用Keras添加的卷积层的典型示例 这里的过滤器基本上是层拥有的内核数量。我的问题很简单。Keras如何决定它必须放入的内核类型,例如高斯内核?(使用TensorFlow后端)

  • 如果没有在OSX捆绑包上指定,Java7如何决定分配的堆内存的最大值(-Xmx),我已经阅读了手册页,它没有给出任何指示。它似乎被分配比默认Java6和我想知道它是否随可用存储器的机器上这将是非常有用的我因为我的应用程序是内存绑定但我不能设置默认太高,因为这样应用程序将无法在较低规格的机器上运行。

  • 问题内容: 我有一个像 如何检查此数组以查看Magenic是否存在?除非必须,否则我不想循环播放。我正在处理几千条记录。 更新 由于这是一个受欢迎的帖子,所以我想分享一些新发现。看来@CAFxX已经分享了!我应该更经常阅读这些内容。 借助 ECMAScript 2015 ,使用新的箭头功能甚至更加简单: 问题答案: 2018 edit :这个答案来自2011,当时浏览器没有广泛支持数组过滤方法和箭

  • 这个问题有多项式解吗?如果有,你能呈现吗?

  • 请先用以下条款验证我: 执行器:它的将运行在上。每个节点可以有多个执行器。 核心:它是内的一个线程,运行在上。每个执行器可以有多个内核或线程。 > 当我们提交火花作业时,它意味着什么?我们是否将工作移交给Yarn或resource manager,它将分配资源给集群中的并执行它?它是正确的理解…? 在spark集群中用于提交作业的命令中,有一个设置执行者数量的选项。 那么这些执行器+核的数量将会是

  • 我是否正确理解了客户端模式的文档? 客户端模式与驱动程序在应用程序主程序中运行的集群模式相反? 在客户端模式下,驱动程序和应用程序主程序是独立的进程,因此+必须小于计算机的内存? 在客户端模式下,驱动程序内存不包括在应用程序主内存设置中吗?