あなたのコードの最も直接的な翻訳は次のようになります。
from pyspark.sql import functions as F
# collect all the unique ORDER_IDs to the driver
order_ids = [x.ORDER_ID for x in orddata.select('ORDER_ID').distinct().collect()]
# filter ORDValue column by list of order_ids, then select only User ID column
usersofinterest = actdataall.filter(F.col('ORDValue').isin(order_ids)).select('User ID')
しかし、あなたがshoul 'ORDER_ID'の数が確実に小さい(おそらく< 100,000程度)場合にのみ、このようなフィルタリングを行います。
'ORDER_ID'の数が多い場合は、order_idsのリストを各実行者に送信するブロードキャスト変数を使用して、order_idsと比較して処理を高速化する必要があります。これは、 'ORDER_ID'が小さい場合でも機能することに注意してください。
order_ids = [x.ORDER_ID for x in orddata.select('ORDER_ID').distinct().collect()]
order_ids_broadcast = sc.broadcast(order_ids) # send to broadcast variable
usersofinterest = actdataall.filter(F.col('ORDValue').isin(order_ids_broadcast.value)).select('User ID')
放送変数の詳細については、チェックアウト:https://jaceklaskowski.gitbooks.io/mastering-apache-spark/spark-broadcast.html
を私は答えの編集をしました –