![](/img/trans.png)
[英]Spark 2.2.0: How to remove Specific Duplicates from a Dataset of a list column
[英]Selecting Some Columns and a Max Value of A specific Column From Spark Dataset
嗨,當我提供dataset.show();
時,我有一個 JAVA spark 數據集dataset.show();
給出以下輸出。
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 完全陌生,任何人都可以幫助我從同一個數據集獲取上述輸出,並返回上例中為6的最后一個max(rownum) 。
以下代碼將提供所需的輸出:
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();
輸出:
+----+-----------+
|Col1|max(rowNum)|
+----+-----------+
|obj1| 3|
|obj2| 5|
|obj3| 6|
+----+-----------+
我已經習慣了標頭信息,以確保我們獲得架構。
這里需要將rowNum
列轉換為 Integer 或 Long。 可以在此之后執行 ordering ,然后是 group by 以獲得最大值。
這是一個非常簡單的用例,所以我可以給你一些提示。 嘗試使用 DataSet Java 文檔: https : //spark.apache.org/docs/2.2.0/api/java/index.html? org/apache/spark/sql/ Dataset.html
您想使用groupBy
函數按Col1
對行進行分組。 您將返回一個 RelationalGroupedDataset: https : //spark.apache.org/docs/2.2.0/api/java/index.html? org/ apache/ spark/ sql/ RelationalGroupedDataset.html
您可以使用max
函數根據您選擇的任何列進行聚合。 如果您遇到此問題,請告訴我。
在 Java 中
String input = "C://Users//U6048715//Desktop//test.csv";
// create new spark Session
SparkSession spark = SparkSession.builder().master("local[2]").appName("pivot Table").getOrCreate()
// loading file data
Dataset<Row> file = spark.read().format("csv").option("header","true").load(input);
// creating view
file.createTempView("tempTable");
Dataset<Row> result = spark.sql(" select col1 , max(row) from tempTable group by col1");
result.show();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.