我有一个cassandra数据库,有大量记录〜400万。我有3个奴隶机器和一个司机。我想将这些数据加载到spark内存中并对其进行处理。当我执行以下操作时,它将读取一台从机中的所有数据(6 Gb中的300 MB),并且所有其他从机的内存都未使用。我对数据帧做了3次重新数据处理,但数据仍在一台机器上。由于每个作业都在一台机器上执行,因此处理数据需要很长时间。这是我在做什么火花中的数据帧重新分区不起作用
val tabledf = _sqlContext.read.format("org.apache.spark.sql.cassandra").options(Map("table" -> "events", "keyspace" -> "sams")).load
tabledf.registerTempTable("tempdf");
_sqlContext.cacheTable("tempdf");
val rdd = _sqlContext.sql(query);
val partitionedRdd = rdd.repartition(3)
val count = partitionedRdd.count.toInt
当我做partitionedRdd一些操作,因为所有的数据存在一台机器上执行它只有一台机器上只
UPDATE 我在配置中使用此 - -conf spark.cassandra.input.split.size_in_mb = 32,还是我的所有数据被加载到一个执行
更新 我使用的火花1.4版和火花卡桑德拉连接器版本1.4发布
你确定你的配置是正确的,你没有'val conf = new SparkConf()。setMaster(“local [*]”)'某处? –
不,我正在集群模式下运行,Web UI显示3个从机。此外,我正在运行此配置spark.cassandra.input.split.size_in_mb = 67108864 – Nipun
http://stackoverflow.com/questions/31583249/apache-spark-taking-5-to-6-minutes-for-simple-count这是我为什么使用67108864 – Nipun