私は、Spark SQLでUDFを使用していくつかのテストデータを生成しています。 私は、別のフィールドfield_aとの組み合わせで乱数生成を使用するfield_bという1つのフィールドを持っています。第3のフィールドは、field_cは、field_bの値は、私はこれが最初、次に第2の選択(Iが生成フィールドを参照することができないように)に使用します100Spark SQL - 非決定性UDFの単一評価
すなわち
select
field_a
randomUDF(field_a) as field_b
from
my_table
によって分割されそのように、3番目のフィールドを形成:
select
field_a
field_b
divisionUDF(field_b) as field_c
from
my_table
私の問題は、それがfield_bの値を計算していないということです。それは関数への参照を保持します。これは、ランダムに生成された部分が異なり、field_cがfield_b/100ではないことを意味します。
field_bを一度評価して値を保持する方法はありますか? さらに、単一のselectステートメント(サブクエリを使用することができることがわかっています)でこれを行うことができれば、それは知っていると素晴らしいでしょう。
同様に、randomUDFから値とそのdoubleを使用して配列を返し、次に配列を次のSELECTのフィールドに分割しますか?しかしそれを試していない。 – max