'when()'을 사용하여 Spark에서 IF-THEN-ELSE 논리를 구현하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-18 07:09:02
원래의
546명이 탐색했습니다.

How to Implement IF-THEN-ELSE Logic in Spark Using `when()`?

IF Then ELSE와 동일한 Spark

이 예에서는 "iris_spark" DataFrame에 새 열 "Class"를 추가하는 것을 목표로 합니다. 기존 범주형 열 "iris_class"의 값을 기반으로 합니다. 카테고리.

그러나 제공된 코드에서 오류가 발생합니다.

iris_spark_df = iris_spark.withColumn(
    "Class", 
   F.when(iris_spark.iris_class == 'Iris-setosa', 0, F.when(iris_spark.iris_class == 'Iris-versicolor',1)).otherwise(2))
로그인 후 복사

오류 메시지는 제공된 코드와 달리 Spark의 when() 함수가 두 개의 인수만 사용함을 나타냅니다.

이 문제를 해결하기 위해 when() 함수를 사용하는 올바른 구조는 다음과 같습니다. 다음 중 하나:

(when(col("iris_class") == 'Iris-setosa', 0)
.when(col("iris_class") == 'Iris-versicolor', 1)
.otherwise(2))
로그인 후 복사

또는

(when(col("iris_class") == 'Iris-setosa', 0)
    .otherwise(when(col("iris_class") == 'Iris-versicolor', 1)
        .otherwise(2)))
로그인 후 복사

이러한 표현식은 SQL CASE 문과 동일합니다:

CASE 
    WHEN (iris_class = 'Iris-setosa') THEN 0
    WHEN (iris_class = 'Iris-versicolor') THEN 1 
    ELSE 2
END
로그인 후 복사

CASE WHEN (iris_class = 'Iris-setosa') THEN 0 
     ELSE CASE WHEN (iris_class = 'Iris-versicolor') THEN 1 
               ELSE 2 
          END 
END
로그인 후 복사

Spark의 when() 일반 구문 is:

when(condition, value).when(...)
로그인 후 복사

or

when(condition, value).otherwise(...)
로그인 후 복사

Hive IF 조건식 IF(condition, if-true, if-false)는 Spark에서 직접 지원되지 않으며 Hive를 지원하는 원시 SQL에 사용됩니다.

위 내용은 'when()'을 사용하여 Spark에서 IF-THEN-ELSE 논리를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿