私はHDFSからファイルを読み込んでいます。私はこれを達成するために以下のコードを使用しています。Javaコードが完全にHDFSからファイルを読み取れない
public class ClassMain {
public static void main(String[] args) throws IOException {
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
Path inFile = new Path(args[1]);
Path outFile = new Path(args[2]);
FSDataInputStream in = fs.open(inFile);
FSDataOutputStream out = fs.create(outFile);
byte buffer[] = new byte[4096];
try{
int bytesRead = 0;
while ((bytesRead = in.read(buffer)) > 0)
{
out.write(buffer, 0, bytesRead);
}
}
catch (IOException e)
{
System.out.println("ERROR*****************"+e);
}
finally
{
in.close();
out.close();
}
私のファイルをHDFSから完全に読み取ることができません。サンプルファイルのサイズは、私が
byte buffer[] = new byte[12000000];
という高い値を大きくしようとしたが、まだ完全にファイルを読み取ることができません1004.9 Kです。
これを行う別の方法はありますか?これは、HDFSでわずか1 MBのサンプルサイズに過ぎません。ファイルは3〜4 GBほどの大きさになります。 long buffer[] = new long[12000000];
のようなものを使用する方法はありますか。そのため、バッファに大きなサイズを収容することができます。
ファイル全体をダウンロードする必要はありますか?もしそうなら、なぜそれをHDFSに入れましたか?たとえば、Sparkを使用してファイルの一部を操作できますか? –