簡體   English   中英

從 Spark 數據集中選擇一些列和特定列的最大值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM