2

私は得る

Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: file:/path/to/my.jar, expected: hdfs://ec2-xx-xx-xx-xxx.compute-1.amazonaws.com

Hadoop の分散キャッシュにローカル ファイルを追加しようとすると、. ファイルが HDFS 上にある場合、このエラーは発生しません (当然、予想される FS を使用しているため)。最初に hdfs にコピーせずに分散キャッシュ内のローカル ファイルを使用する方法はありますか? コード スニペットを次に示します。

Configuration conf = job.getConfiguration();
FileSystem fs = FileSystem.getLocal(conf);
Path dependency = fs.makeQualified(new Path("/local/path/to/my.jar");
DistributedCache.addArchiveToClassPath(path, conf);

ありがとう

4

3 に答える 3

2

最初にHDFSにある必要があります。ここで手足に出かけるつもりですが、ファイルがプッシュされるのではなく、スレーブによってローカル分散キャッシュに「プル」されるためだと思います。プルされているため、そのローカルパスにアクセスする方法はありません。

于 2012-03-16T16:53:09.363 に答える
0

ファイルは、ローカル システム、hdfs、S3、または他のクラスターのいずれかにある場合もあります。として指定する必要があります

-files hdfs:// ファイルが hdfs にある場合

デフォルトでは、ローカル ファイル システムを想定しています。

于 2013-10-23T12:29:44.207 に答える
0

いいえ、最初に HDFS にない限り、分散キャッシュに何かを置くことはできないと思います。すべての Hadoop ジョブは、HDFS に関連する入力/出力パスを使用します。

于 2012-03-16T17:19:56.237 に答える