【问题标题】:Apache Spark taking 5 to 6 minutes for simple count of 1 billon rows from CassandraApache Spark 需要 5 到 6 分钟才能从 Cassandra 简单计算 10 亿行
【发布时间】:2015-10-13 12:22:58
【问题描述】:

我正在使用 Spark Cassandra 连接器。 从 Cassandra 表中获取数据需要 5-6 分钟。在 Spark 中,我在日志中看到了许多任务和 Executor。原因可能是 Spark 将进程划分为许多任务!

下面是我的代码示例:

public static void main(String[] args) {

    SparkConf conf = new SparkConf(true).setMaster("local[4]")
            .setAppName("App_Name")
            .set("spark.cassandra.connection.host", "127.0.0.1");

    JavaSparkContext sc = new JavaSparkContext(conf);

    JavaRDD<Demo_Bean> empRDD = javaFunctions(sc).cassandraTable("dev",
            "demo");
    System.out.println("Row Count"+empRDD.count());
}

【问题讨论】:

  • 那么,问题是什么? :)
  • 显然,我想减少时间。
  • @karmadipdodiya 您好,您是如何将 10 亿行的简单计数配置为花费 5~6 分钟的?为我做了一个简单的计数花了 10 多个小时。 spark和cassandra你做了什么配置?

标签: java cassandra apache-spark spark-cassandra-connector


【解决方案1】:

为了加快速度,您可以尝试在创建 SparkConf 时设置 spark.cassandra.input.split.size_in_mb。

可能是执行程序试图一次将所有行读入内存。如果它们不适合,可能会导致它将 RDD 分页到磁盘,从而导致时间变慢。通过指定拆分大小,它将以块的形式计算行数,然后丢弃它们而不是分页到磁盘。

您可以查看如何设置分割大小here的示例。

【讨论】:

    【解决方案2】:

    在 Google 上搜索后,我喜欢最新的 spark-cassandra-connector 中的问题。 参数spark.cassandra.input.split.size_in_mb 默认值为 64 MB,在代码中被解释为 64 字节。 所以尝试 spark.cassandra.input.split.size_in_mb = 64 * 1024 * 1024 = 67108864

    举个例子:

    public static void main(String[] args) {
    
        SparkConf conf = new SparkConf(true).setMaster("local[4]")
                .setAppName("App_Name")
                .set("spark.cassandra.connection.host", "127.0.0.1")
                .set("spark.cassandra.input.split.size_in_mb","67108864");
    
    
        JavaSparkContext sc = new JavaSparkContext(conf);
    
        JavaRDD<Demo_Bean> empRDD = javaFunctions(sc).cassandraTable("dev",
                "demo");
        System.out.println("Row Count"+empRDD.count());
    }
    

    【讨论】:

    猜你喜欢
    • 2017-04-08
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2019-11-21
    • 2021-12-30
    相关资源
    最近更新 更多