スパークデータフレームを2つに分割し、それぞれのサブデータフレームの行番号を定義します。しかし、関数monotonically_increasing_idは元のデータフレームから行番号を定義していることがわかりました。ここで Pysparkling 2 reset monotonically_increasing_id from 1
は、私はPythonでやったことです:# df is the original sparkframe
splits = df.randomSplit([7.0,3.0],400)
# add column rowid for the two subframes
set1 = splits[0].withColumn("rowid", monotonically_increasing_id())
set2 = splits[1].withColumn("rowid", monotonically_increasing_id())
# check the results
set1.select("rowid").show()
set2.select("rowid").show()
私は両方とも1〜5(または0〜4、はっきり覚えていない)二つのフレームのためのROWIDの最初の5つの要素を期待します:
set1: 1 2 3 4 5
set2: 1 2 3 4 5
しかし、私は実際に得たことは次のとおりです。
set1: 1 3 4 7 9
set2: 2 5 6 8 10
2つのサブフレーム行IDは中に実際に彼らの行IDですオリジナルのスパークフレームは新しいものではありません。
スパークの新生児として、私はこれがなぜ起こったのか、それをどう修正するのかについての助けを求めています。
ありがとうございます。私はspark 2.0を使用しています。あなたはROWIDのラベルをつけることについて何か提案がありますか? – TooYoung
私はすべてのシナリオで動作するソリューションを考えることはできません。 monotonically_increase_idが期待どおりに動作すると仮定すると、連続的に増加しますが、それでもあなたのためには機能しません。どうして?ノードに障害が発生したらどうなりますか?障害の発生したノード上のパーティションは、ソースまたは最後のキャッシュ/チェックポイントから再生成されます。障害シナリオはほとんどありません。しかしもう一つのシナリオはより一般的です。データフレームを生成した後、それをメモリにキャッシュすると仮定します。メモリから追い出された場合はどうなりますか?今後、データフレームを再生成しようとします。 – Lan