2017-12-16 15 views
1

あなたの下には、私がやろうとしているものの簡略版があります。 S3に格納されているを150 parquets(> 10TB)にロードします。次に、このデータフレームにfunc.monotonically_increasing_id()というID列を与えます。その後、私はこのdataframeの2つの偏差を保存します。私が適用機能は、今私はparquet_2を作成するために、再びS3からすべてのデータをparquet_1ロードを作成した後にその火花を気づいた私がここに存在するが、私は、これは同じIDが常に同じロジックプランで出力されますか?

DF_loaded = spark.read.parquet(/some/path/*/') 
DF_with_IDs = DF_loaded.withColumn('id',func.monotonically_increasing_id()) 
#creating parquet_1  
DF_with_IDs.where(col('a').isNotNull()).write.parquet('/path/parquet_1/') 
#creating parquet_2 
DF_with_IDs.where(col('b').isNotNull()).write.parquet('/path/parquet_2/') 

間でポイントを獲得を期待よりも、もう少し複雑にしています。今私はparquet_1に与えられたIDがparquet_2のものと一致しないことを心配しています。同じ行がparquetsに異なるIDを持っていること。

#parquet_1 
load_data -> give_ids -> make_selection -> write_parquet 
#parquet_2 
load_data -> give_ids -> make_selection -> write_parquet 

だから、両方 parquetsで同じ行に与えられた同じIDです:限り私はロジック計画スパークは、このようなルックスを思い付くことを理解するため?

答えて

1

限り:

  • あなたはスパーク(SPARK-13473SPARK-14241)の最新バージョンを使用しています。
  • アクション間の構成変更はありません(構成の変更はパーティション数および結果IDに影響する可能性があります)。

monotonically_increasing_idは安定しているはずです。これにより、述部プッシュダウンが無効になることに注意してください。

rdd.zipWithindex.toDFは、構成に関係なく安定している必要があります。

+0

私は2.2です。それで解決される – Thagor

関連する問題