如何使用 Spark DataFrame 计算 Cassandra table 上的汇总统计信息?

How to compute summary statistic on Cassandra table with Spark DataFrame?

我正在尝试获取某些 Cassandra/SPARK 数据的最小值、最大值平均值,但我需要使用 JAVA 来完成。

import org.apache.spark.sql.DataFrame;
import static org.apache.spark.sql.functions.*;

DataFrame df = sqlContext.read()
        .format("org.apache.spark.sql.cassandra")
        .option("table",  "someTable")
        .option("keyspace", "someKeyspace")
        .load();

df.groupBy(col("keyColumn"))
        .agg(min("valueColumn"), max("valueColumn"), avg("valueColumn"))
        .show();

已编辑以显示工作版本: 确保将 " 放在 someTable 和 someKeyspace

周围

我建议查看 https://github.com/datastax/spark-cassandra-connector/tree/master/spark-cassandra-connector-demos

其中包含 Scala 和同等语言的演示 Java。

您还可以查看:http://spark.apache.org/documentation.html

其中有大量示例,您可以在 Scala、Java 和 Python 版本之间切换。

我几乎 100% 肯定在这些链接之间,您会找到您正在寻找的内容。

如果在那之后您遇到任何问题,请随时使用更具体的 error/problem 更新您的问题。

一般来说,

编译scala文件: $ scalac Main.scala

从 Main.class 文件创建 java 源文件: $ javap 主要

更多信息可在以下url获得: http://alvinalexander.com/scala/scala-class-to-decompiled-java-source-code-classes

只需将您的数据导入为 DataFrame 并应用所需的聚合:

import org.apache.spark.sql.DataFrame;
import static org.apache.spark.sql.functions.*;

DataFrame df = sqlContext.read()
        .format("org.apache.spark.sql.cassandra")
        .option("table", someTable)
        .option("keyspace", someKeyspace)
        .load();

df.groupBy(col("keyColumn"))
        .agg(min("valueColumn"), max("valueColumn"), avg("valueColumn"))
        .show();

其中 someTablesomeKeyspace 分别存储 table 名称和键空间。