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
Java 从Spark数据集中选择某些列和特定列的最大值_Java_Apache Spark_Dataset_Apache Spark Sql - Fatal编程技术网

Java 从Spark数据集中选择某些列和特定列的最大值

Java 从Spark数据集中选择某些列和特定列的最大值,java,apache-spark,dataset,apache-spark-sql,Java,Apache Spark,Dataset,Apache Spark Sql,嗨,当我给出Dataset.show()时,我有一个JAVA spark数据集 给出以下输出 Col1 col2 rowNum obj1 item1 1 obj1 item2 2 obj1 item3 3 obj2 item1 4 obj2 item3 5 obj3 item4 6 对于同一个数据集,我想得到以下输出 Col1 max(rownum) obj1 3 obj2 5 obj3

嗨,当我给出
Dataset.show()时,我有一个JAVA spark数据集
给出以下输出

Col1    col2    rowNum

obj1    item1    1
obj1    item2    2
obj1    item3    3
obj2    item1    4
obj2    item3    5
obj3    item4    6
对于同一个数据集,我想得到以下输出

Col1    max(rownum)

obj1    3
obj2    5
obj3    6

我是JAVA spark的新手,谁能帮我从同一个数据集中获取上述输出,并返回上一个max(rownum),即在上述情况下6

这是一个非常简单的用例,因此我可以给你一些提示。尝试使用DataSet Java文档:

您想使用
groupBy
功能按
Col1
对行进行分组。将返回一个RelationalGroupedDataset:


您可以使用
max
函数根据您选择的任何列进行聚合。如果您在这方面遇到问题,请告诉我。

以下代码将提供所需的输出:

SparkSession s=SparkSession.builder().appName("Stack Overflow Example test").master("local[*]").getOrCreate();
DataFrameReader read=s.read();
Dataset<Row> resp=read.option("header","true").csv("D://test.csv");
Dataset<Row> withColumn = resp.withColumn("rowNum", resp.col("rowNum").cast("long"));
Dataset<Row> orderBy = withColumn.orderBy(resp.col("Col1"));
orderBy.groupBy(resp.col("Col1")).max("rowNum").show();
我已经使用了标题信息,以确保我们获得模式

这里需要将
rowNum
列转换为整数或长。 随后可以执行排序,然后是分组,以获得最大值

在Java中

String input=“C://Users//U6048715//Desktop//test.csv”;
//创建新的spark会话
SparkSession spark=SparkSession.builder().master(“本地[2]”).appName(“透视表”).getOrCreate()
//加载文件数据
数据集文件=spark.read().format(“csv”).option(“header”,“true”).load(输入);
//创建视图
createTempView文件(“诱惑”);
Dataset result=spark.sql(“按col1从可诱惑的组中选择col1,max(行));
result.show();

虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-@pirho即使链接发生变化,Dataset和RelationalGroupedDataset的文档也应该非常容易找到…答案中包含了要点->相应API中的“groupBy”和“max”…无意冒犯OP(每个人都从某个地方开始!),但这是一个非常基本的问题,因此,最好是教他们去哪里找,而不是给他们一句话的答案。
+----+-----------+
|Col1|max(rowNum)|
+----+-----------+
|obj1|          3|
|obj2|          5|
|obj3|          6|
+----+-----------+