「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 サイトの他の関連記事を参照してください。