java cassandra apache-spark spark-cassandra-connector

java - Apache Spark tarda de 5 a 6 minutos en contar de forma sencilla 1 billón de filas de Cassandra



apache-spark spark-cassandra-connector (2)

Estoy usando el conector Spark Cassandra. Se necesitan de 5 a 6 minutos para obtener datos de la tabla de Cassandra. En Spark he visto muchas tareas y Executor en log. ¡La razón podría ser que Spark dividió el proceso en muchas tareas!

A continuación está mi ejemplo de código:

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()); }


Después de buscar en Google, me gusta el problema en el último conector spark-cassandra. El parámetro spark.cassandra.input.split.size_in_mb El valor predeterminado es 64 MB que se interpreta como 64 bytes en el código. Así que intente con spark.cassandra.input.split.size_in_mb = 64 * 1024 * 1024 = 67108864

Escuchar es un ejemplo:

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()); }


Para acelerarlo, puede intentar configurar spark.cassandra.input.split.size_in_mb al crear SparkConf.

Podría ser que los ejecutores están tratando de leer todas las filas en la memoria a la vez. Si no todos encajan, podría causar que coloque el RDD en el disco, lo que ocasiona un tiempo lento. Al especificar un tamaño dividido, contará las filas en fragmentos y luego las descartará en lugar de enviarlas al disco.

Puede ver un ejemplo de cómo establecer el tamaño de división aquí .