Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ApacheSpark只需5到6分钟就可以从Cassandra简单计算出10亿行_Java_Cassandra_Apache Spark_Spark Cassandra Connector - Fatal编程技术网

Java ApacheSpark只需5到6分钟就可以从Cassandra简单计算出10亿行

Java ApacheSpark只需5到6分钟就可以从Cassandra简单计算出10亿行,java,cassandra,apache-spark,spark-cassandra-connector,Java,Cassandra,Apache Spark,Spark Cassandra Connector,我正在使用Spark Cassandra连接器。 从Cassandra表中获取数据需要5-6分钟。在Spark中,我在日志中看到了许多任务和执行者。原因可能是Spark将流程划分为许多任务 下面是我的代码示例: public static void main(String[] args) { SparkConf conf = new SparkConf(true).setMaster("local[4]") .setAppName("App_Name")

我正在使用Spark Cassandra连接器。 从Cassandra表中获取数据需要5-6分钟。在Spark中,我在日志中看到了许多任务和执行者。原因可能是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());
}
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());
}
publicstaticvoidmain(字符串[]args){
SparkConf conf=new SparkConf(true).setMaster(“本地[4]”)
.setAppName(“应用程序名称”)
.set(“spark.cassandra.connection.host”、“127.0.0.1”);
JavaSparkContext sc=新的JavaSparkContext(conf);
JavaRDD empRDD=javaFunctions(sc).cassandraTable(“dev”,
“演示”);
System.out.println(“行计数”+empRDD.Count());
}

为了加快速度,您可以在创建SparkConf时尝试将spark.cassandra.input.split.size以mb为单位进行设置

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


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

在谷歌上搜索后,我喜欢最新spark cassandra连接器中的问题。 参数
spark.cassandra.input.split.size_in_mb
默认值为64 mb,在代码中被解释为64字节。 所以试试看
spark.cassandra.input.split.size_in_mb=64*1024*1024=67108864

Hear就是一个例子:

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());
}
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());
}
publicstaticvoidmain(字符串[]args){
SparkConf conf=new SparkConf(true).setMaster(“本地[4]”)
.setAppName(“应用程序名称”)
.set(“spark.cassandra.connection.host”,“127.0.0.1”)
.set(“spark.cassandra.input.split.size_in_mb”,“67108864”);
JavaSparkContext sc=新的JavaSparkContext(conf);
JavaRDD empRDD=javaFunctions(sc).cassandraTable(“dev”,
“演示”);
System.out.println(“行计数”+empRDD.Count());
}

那么,问题是什么呢?:)显然,我想减少时间。@karmadipdodiya您好,您是如何配置为用5~6分钟来简单计算10亿行的?我花了10多个小时做了一个简单的计数。您对spark和cassandra进行了什么配置?以下是修复connector v1.3.0中拆分大小设置(MB vs B)的错误号,仅供参考: