sparkではなく特定のパーティションを上書きしたい。私は次のコマンドを試しています:sparkデータフレームの書き込み方法で特定のパーティションを上書きする
df.write.orc('maprfs:///hdfs-base-path','overwrite',partitionBy='col4')
ここで、dfは上書きされるインクリメンタルデータを持つデータフレームです。
hdfs-base-pathにはマスターデータが含まれています。
上記のコマンドを実行すると、すべてのパーティションが削除され、hdfsパスにdf内のパーティションが挿入されます。
私の要件は、指定されたhdfsパスでdfに存在するパーティションだけを上書きすることです。誰かがこれで私を助けてくれますか?
おかげでたくさんのシムを。最初のデータフレームに約100個のパーティションのデータがあると仮定すると、このデータフレームを別の100個のデータフレームに分割してそれぞれのパーティションの値で分割してパーティションディレクトリに直接挿入する必要があります。これらの100個のパーティションを同時に保存することはできますか?また、Spark 1.6.1を使用しています。orcファイル形式を使用している場合、どのようにメタデータファイルの出力を停止できますか? – yatin
Re:メタデータ、いいえ、ORCは別の形式ですが、データ以外のファイルを生成しないと思います。 1.6.1では、パーティションツリーのサブディレクトリにORCファイルのみが必要です。したがって、 '_SUCCESS'を手で削除する必要があります。複数のパーティションに並列に書き込むことはできますが、同じジョブから書き込むことはできません。プラットフォーム機能に基づいて複数のジョブを開始します(REST APIを使用)。 – Sim
これについての最新情報はありますか? saveToTable()は特定のパーティションだけを上書きしますか?どのパーティションが上書きされたかを知るのに十分なほどスマートな印象を与えますか? –