「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

この例では、新しい列「Class」を「iris_spark」データフレームに追加することを目的としています。既存のカテゴリ列「iris_class」の値に基づきます。この列には 3 つの異なる値があります。

ただし、提供されたコードではエラーが発生します:

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() 関数が引数を 2 つだけ取ることを示しています。

この問題に対処するには、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() の一般的な構文は:

when(condition, value).when(...)
ログイン後にコピー

または

when(condition, value).otherwise(...)
ログイン後にコピー

Hive IF 条件式 IF(condition, if-true, if-false) は Spark で直接サポートされておらず、使用できるのは次のとおりであることに注意してください。 Hive サポートを備えた生の SQL で使用されます。

以上が「when()」を使用して Spark で IF-THEN-ELSE ロジックを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート