2016-03-28 6 views
0

スパークジョブを実行しているときに、基礎となるHDFSのスナップショットを作成します。特定のステップでは、一部の寄木細工ファイルの内容を削除します。スナップショットを作成して削除操作を実行し、操作結果を確認して次の手順に進みます。スパークジョブからFSのスナップショットを作成する

しかし、私はスパークジョブからHDFS APIにアクセスする良い方法を見つけることができません。スナップショットを作成するディレクトリには、HDFSでスナップショット可能なタグが付けられています。スナップショットを作成するコマンドラインの方法は機能しますが、私はこれをプログラムで行う必要があります。

私はCDH 5.5でSpark 1.5を実行しています。

私はこの操作をどのように実行できるかについてのヒントの手がかりを教えてください。

ランデブ

+0

Java(Runtime.getRuntime()。exec ???)の具体的な構文はわかりませんが、コードからシステムコマンドを実行すると、HDFSコマンドを使用できるようになります。標準の入出力変数。 – Jared

+0

@Salmonerdスナップショットを作成するためのJava APIがあります。しかし、それはHDFS APIへのアクセスを必要としました。 Spark ContextからHDFSに直接アクセスできるかどうかはわかりません。ほとんどの例には、HDFS APIにアクセスするために作成された埋め込みハープクラスターがあります。 – Ramdev

+0

私が言っていることは、APIにアクセスするのではなく、JavaコードにHDFSコマンドを書き込んでHDFSにアクセスできることです。 – Jared

答えて

0

おかげで、私はこれを確認していないが、少なくとも私はコンパイルエラーを取得しないと、理論的には、このソリューションが動作するはずです。私は、これは理論的に動作すると仮定し

val sc = new SparkContext(); 
val fs = FileSystem.get(sc.hadoopConfig) 
val snapshotPath = fs.createSnapshot("path to createsnapshot of","snapshot name") 

..... 
..... 
if (condition satisfied) { 
    fs.deleteSnapshot(snapshotPath,"snapshot name") 
} 

これはScalaのコードです。

関連する問題