Spark DataFrame GroupBy에서 추가 열을 얻는 대체 방법
Spark DataFrame에서 groupBy 작업을 수행할 때 다음 문제만 발생할 수 있습니다. 원본에서 다른 열을 제외하고 그룹화 열과 집계 함수의 결과를 검색합니다. DataFrame.
이 문제를 해결하려면 다음 두 가지 기본 접근 방식을 고려할 수 있습니다.
Spark SQL은 SQL:1999 이전 규칙을 준수하여 집계 쿼리에 추가 열을 포함하는 것을 금지합니다. 따라서 필요한 데이터를 집계한 후 이를 원래 DataFrame에 다시 조인할 수 있습니다. 이는 아래와 같이 selectExpr 및 Join 메소드를 사용하여 수행할 수 있습니다.
// Aggregate the data val aggDF = df.groupBy(df("age")).agg(Map("id" -> "count")) // Rename the aggregate function's result column for clarity val renamedAggDF = aggDF.withColumnRenamed("count(id)", "id_count") // Join the aggregated results with the original DataFrame val joinedDF = df.join(renamedAggDF, df("age") === renamedAggDF("age"))
또는 다음을 수행할 수 있습니다. 창 기능을 활용하여 추가 열을 계산하고 그룹화된 DataFrame 내에 보존합니다. 이 방법에는 주로 그룹화 열에 대한 창 프레임을 정의하고 집계 함수를 적용하여 원하는 데이터를 검색하는 작업이 포함됩니다.
// Get the row number within each age group val window = Window.partitionBy(df("age")).orderBy(df("age")) // Use the window function to calculate the cumulative count of ids val dfWithWindow = df.withColumn("id_count", count("id").over(window))
이러한 기술을 사용하고 나면 필요한 추가 열을 검색하는 동시에 필요한 추가 열을 검색할 수 있습니다. Spark DataFrame에서 groupBy 작업을 수행합니다.
위 내용은 GroupBy 작업 후 Spark DataFrame에 추가 열을 포함하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!