Spark DataFrames に「IF THEN ELSE」ロジックを実装するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-19 12:06:02
オリジナル
801 人が閲覧しました

How to Implement

「IF then ELSE」に相当する Spark

概要:

Spark DataFrame 変換が提供するデータを操作する強力な方法。一般的な操作の 1 つは、変数値に基づいて条件付きで変換を適用することです。このようなタスクでは、SQL の「IF then ELSE」ステートメントに相当する Spark を理解することが重要です。

質問:

ユーザーが新しい列を追加しようとしています。条件付きルールに基づく Spark DataFrame。ただし、複数の条件で F.when 関数を使用しようとすると、TypeError が発生します。

TypeError: when() takes exactly 2 arguments (3 given)
ログイン後にコピー

回答:

エラーが発生するのは、F.when Spark の関数は、条件と、条件が満たされたときに返される値の 2 つの引数を必要とします。ユーザーのコードには、追加の引数である別の F.when 条件が含まれていますが、これは構文が正しくありません。

F.when を使用する Spark の「IF then ELSE」に相当する正しい構文は、次のいずれかです:

(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)))
ログイン後にコピー

最初の構文はネストされた F.when 条件を使用し、2 番目の構文は F.otherwise 関数を使用します。

同等の SQL ステートメントは CASE 式になります。 :

CASE WHEN (iris_class = 'Iris-setosa') THEN 0 
     ELSE CASE WHEN (iris_class = 'Iris-versicolor') THEN 1 
               ELSE 2 
          END 
END
ログイン後にコピー

Spark は Hive IF 条件付き構文もサポートしますが、Hive サポートを備えた生の SQL でのみサポートされます:

IF(condition, if-true, if-false)
ログイン後にコピー

以上がSpark DataFrames に「IF THEN ELSE」ロジックを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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