私は、pysparkを使用して1つのRDD上で完全に独立した変換を2つの関数が同時に実行しようとしています。同じことをするいくつかの方法は何ですか?pysparkを使用して1つのRDD上で完全に独立した変換を2つ実行する方法
def doXTransforms(sampleRDD):
(X transforms)
def doYTransforms(sampleRDD):
(Y Transforms)
if __name__ == "__main__":
sc = SparkContext(appName="parallelTransforms")
sqlContext = SQLContext(sc)
hive_context = HiveContext(sc)
rows_rdd = hive_context.sql("select * from tables.X_table")
p1 = Process(target=doXTransforms , args=(rows_rdd,))
p1.start()
p2 = Process(target=doYTransforms, args=(rows_rdd,))
p2.start()
p1.join()
p2.join()
sc.stop()
これは機能しませんが、これはうまくいきません。 しかし、これを行うには他の方法がありますか?特に、python-spark固有のソリューションはありますか?
通常、それぞれの変換が(ほぼ)100%のクラスタリソースを使用する可能性がある場合、パラレルで実行すると実際には速度が遅くなります。 – ShuaiYuan