2017-01-31 14 views
0

私はKafkaからデータを取得するためにSpark Streamingを使用したいと思います。今、私はリモートHDFSに自分のデータを保存したいと思います。私は関数saveAsTextを使用しなければならないことを知っています。しかし、私は正確にパスを指定する方法を知らない。sparkでHDFSにデータを保存するには?

myDStream.foreachRDD(frm->{ 
    frm.saveAsTextFile("hdfs://ip_addr:9000//home/hadoop/datanode/myNewFolder"); 
}); 

ip_addrは私のHDFSリモートサーバのIPアドレスです:

は、私がこれを書いている場合、正しいことです。 /home/hadoop/datanode/は、hadoopをインストールしたときに作成されたDataNode HDFSディレクトリです(このディレクトリを指定する必要があるかどうかわかりません)。そして、 myNewFolderは私のデータを保存したいフォルダです。

ありがとうございます。

Yassir

答えて

3

パスはHDFSのディレクトリでなければなりません。

たとえば、myNewFolderという名前のフォルダ内のファイルをHDFSのルート/のパスに保存する場合は、

このディレクトリmyNewFolderが作成されるスパークジョブの実行にhdfs://namenode_ip:port/myNewFolder/

だろう使用するパス。

hdfs-site.xmlにあるdfs.datanode.data.dirのデータノードデータディレクトリは、HDFSに保存するファイルのブロックを保存するために使用され、HDFSディレクトリパスとして参照されるべきではありません。

+0

ありがとう、それは非常に明確です。あなたの場合、「港」の価値は何ですか? –

+0

ポートとして9000を使用しましたが、同じものを使用する必要があります。これはプロパティ 'fs.defaultFS'に対して' core-site.xml'で定義されたRPCポートです。 – franklinsijo

+0

私はあなたに私に言った理由をしましたが、新しいファイルが作成されず、スパークがエラーを返さないことを確認しました。 –

関連する問題