0
私は2つのテーブルを持っています.1つはすべてのuser_idとその属性を持ち、もう1つは興味深いuser_idsとその属性だけです。私はそれらを両方とも照会して、機械学習問題のためのトレーニングセットを作成したいと思う。純粋なSQLでSparkに効率的に参加を残すには?
私はこのようにそれを行うだろう:スパークで
select label, user_id, feature
from (
select 1 as label, user_id, feature
from interesting_table
UNION ALL
select 0 as label, a.user_id, a.feature
from alldata_table a
left join
interesting table b
on a.user_id = b.user_id
where b.user_id is null
)
、interesting_table
から引っ張っすることは十分に簡単ですが、左はinteresting_table
とalldata_table
間の結合は、高価な証明しています。
- 上記の操作をsqlで正確に行い、その結果をデータフレームとして抽出しますか?
interesting_table
とalldata_table
をデータフレームとして作成し、.join()演算子を使用しますか?- 「)(.isin」をデータフレームとして
interesting_table
とalldata_table
を作成し、否定することでinteresting_df.user_id
サブセットalldata_df.user_id
のユニークなメンバーを取得? - 他に何かありますか?
待ち、 'a.user_id = b.user_id'と'どこb.user_idがヌル 'なので、'どこにa.user_idがヌルであるのか 'しかないかもしれません。 –
これは左結合のため、b.user_idがnullで、a.user_idがそうでない場合は、a.user_idを保持し、不一致を示します。 –
申し訳ありませんが、私のせいです;)それは大丈夫です。私はもっと高価な答えを書くつもりですが、まずDSLまたはSQLを使用するかどうかは関係ありません。どちらもCatalystオプティマイザを使用して最適化されています –