[Spark] DataFrame 그룹별 topN 예제, 여러 파일 읽기

Woong·2022년 1월 4일
0

Apache Spark

목록 보기
9/22
post-custom-banner

DataFrame 을 이용하여 각 그룹별 topN 뽑기

import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions.{rank, desc}

...

val dataSetWindow = Window.partitionBy("group_id", "subgroup_id").orderBy(desc("count"))
val rankLimit: Int = 100

val groupedDataFrame = myDataFrame.groupBy("group_id", "subgroup_id", "mydata")
val myDataSet = groupedDataFrame.count.withColumn("rank", rank.over(dataSetWindow)).where($"rank" <= rankLimit)

myDataSet.show(1000) // action

여러 파일에서 DataFrame 으로 읽기

  • CSV
val sparkSession = SparkSession.builder().appName("MyTest").getOrCreate()
val testDF = sparkSession.read.format("com.databricks.spark.csv")
	.option("delimiter","\t").schema(testSchema)
	.load("hdfs://localhost:9000/user/root/DataBase/test/{test1.log,test2.log}");
  • Parquet
val sparkSession = SparkSession.builder().appName("MyTest").getOrCreate()
val testDF = sparkSession.read.schema(testSchema).parquet("hdfs://localhost:9000/user/root/DataBase/test/{test1.log,test2.log}");

post-custom-banner

0개의 댓글