Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
以最佳方式计算JavaRDD的统计信息_Java_Apache Spark_Spark Cassandra Connector - Fatal编程技术网

以最佳方式计算JavaRDD的统计信息

以最佳方式计算JavaRDD的统计信息,java,apache-spark,spark-cassandra-connector,Java,Apache Spark,Spark Cassandra Connector,我需要在巨大的RDD上进行复杂的计算,但为了简单起见,我将问题简化为更简单的问题: 我得到了一个JavaRDD,如下所示: JavaRDD<Student> students = sc.parallelize( javaFunctions(sc).cassandraTable("test", "school", mapRowTo(Student.class)).collect()); 现在,我希望在一次迭代中,如果可能的话,使用StatCoun

我需要在巨大的RDD上进行复杂的计算,但为了简单起见,我将问题简化为更简单的问题:

我得到了一个JavaRDD,如下所示:

 JavaRDD<Student> students = sc.parallelize(
                javaFunctions(sc).cassandraTable("test", "school",   mapRowTo(Student.class)).collect());
现在,我希望在一次迭代中,如果可能的话,使用StatCounter为每个教室设置stddedv、平均mark1和mark2列。 我知道如何使用StatCounter,但需要一段时间

JavaRDD<Numeric> 
JavaRDD
就我而言,我有

JavaRDD<Student>
JavaRDD
有什么想法吗

谢谢

首先,永远不要:

sc.parallelize(someRDD.collect());
这不可能是个好主意。一如既往

现在:

一次迭代,如果可能的话,使用StatCounter为每个教室设置stddedv、mark1和mark2列的平均值

这是可能的,但只需将
DataFrame
用于:

使用stat counter,您可以将
javapairdd
(class,(mark1,mark2))
)和
StatCounters的
Tuple2
进行转换。您还可以使用
mllib.Vector
替换
Tuple2
,并使用
MultivariateStatisticalSummary
进行聚合首先,决不:

sc.parallelize(someRDD.collect());
这不可能是个好主意。一如既往

现在:

一次迭代,如果可能的话,使用StatCounter为每个教室设置stddedv、mark1和mark2列的平均值

这是可能的,但只需将
DataFrame
用于:

使用stat counter,您可以将
javapairdd
(class,(mark1,mark2))
)和
StatCounters的
Tuple2
进行转换。您还可以使用
mllib.Vector
替换
Tuple2
,并使用
MultivariateStatisticalSummary

进行聚合。因此,如果您有3个节点(例如)使用Spark和Cassandra,使用Parralize读取,它将带来从JavaRDD中每个节点分割的数据。即使在他们的视频课程中,Datastax也只使用javaRDD而不使用DataFramesSo,如果您有3个节点(例如)使用Spark和Cassandra,使用parralelize读取,它将带来javaRDD中每个节点分离的数据。即使在视频课程中,Datastax也只使用javaRDD,而不使用数据帧
import static org.apache.spark.sql.functions.*;

spark
 .read
 .format("org.apache.spark.sql.cassandra")
 .options(Map( "table" -> "school", "keyspace" -> "test"))
 .load()
 .groupBy("classroom"))
 .agg(mean("mark1"), stddev("mark1"), mean("mark2"), stddev("mark2"));