Ich lese eine Datei von HDFS. Ich verwende den folgenden Code, um dies zu erreichen.Java-Code nicht in der Lage, Datei von HDFS vollständig zu lesen
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();
}
Es ist nicht in der Lage, meine Datei vollständig von HDFS zu lesen. Die Größe der Beispieldatei ist 1.004,9 K. Ich habe versucht, den Wert so hoch wie
byte buffer[] = new byte[12000000];
Erhöhung Aber es ist immer noch nicht in der Lage, die Datei vollständig zu lesen.
Gibt es alternative Möglichkeiten, dies zu tun? Dies ist nur eine kleine Beispielgröße von 1 MB in HDFS. Dateien wären so groß wie 3 bis 4 GB. Gibt es eine Möglichkeit, etwas wie zu verwenden: long buffer[] = new long[12000000];
, so dass es größere Größe in Puffer aufnehmen kann.
Müssen Sie wirklich die ganze Datei herunterladen? Wenn ja, warum hast du es in HDFS gesetzt? Können Sie beispielsweise Spark verwenden, um Teile der Datei zu bearbeiten? –