私はジュピターのノートブックで、sparkデータフレームを作成し、spark 2.0.1を使用してpythonでs3に保存しています。コードはsparkで再利用する前に、s3バケットを適切に削除/クリアするにはどうすればよいですか?
action = 'CREATE'
if action == 'CREATE':
df = dfA.filter(...)
df = df.join(...)
df.coalesce(4).write.format('parquet').save('s3://my/path')
elif action == 'LOAD':
df = spark.read.parquet('s3://my/path')
ようになり、私はそれだけで2(すべてのレコードが複製された持っている必要があるときにいくつかの点で、私はバグを持っていたし、それに4つの項目を持っていたDF(特定のクエリのための4)を書いたと思います - おそらく、私が最初にそれを取り除かずに何かに参加していたからでしょう)。
私は古いs3:// my/pathを削除した後、その論理を作成して場所を書き込むことができることを確認できます。私のdfは、私が期待する2つの項目を持っています。
私が混乱しているのは、データフレームをロードするLOADロジックを実行すると、2つのアイテムが間違っていて、dfがs3から読み込まれたものに置き換えられた場合、誤った4つのアイテムそれ。
新しいパス(s3://my/path2
)を使い始めると、作成と読み込みのこの演習が機能します。
s3のバグのようですか、それともスパークですか?
- いいえ、スパークしません。変数を単独のままにして、データセットを保持したいとします。そして、はい、S3の一貫性は状況を悪化させているように見えます。 –