So konvertieren Sie ein Hadoop-Pfadobjekt in ein Java-Dateiobjekt

8

Gibt es eine Möglichkeit, ein gültiges und vorhandenes Hadoop-Pfadobjekt in ein nützliches Java-Dateiobjekt zu ändern. Gibt es eine gute Möglichkeit, dies zu tun oder muss ich knüppeln, um Code in die Einreichung zu schreiben? Die offensichtlicheren Ansätze funktionieren nicht, und es scheint, als wäre es ein gewöhnlicher Code.

%Vor%

Dies funktioniert nicht, da Path :: toURI () den "hdfs" Bezeichner zurückgibt und Java's Datei (URI uri) -Konstruktor nur den "file" Bezeichner erkennt.

Gibt es eine Möglichkeit, Pfad und Datei zusammenzuarbeiten?

**

Ok, wie wäre es mit einem bestimmten begrenzten Beispiel.

%Vor%

DistributedCache soll eine lokalisierte Kopie einer Datei bereitstellen, aber es gibt einen Pfad zurück. Ich nehme an, dass DistributedCache eine lokale Kopie der Datei erstellt, wo sie sich auf demselben Datenträger befinden. In Anbetracht dieses begrenzten Beispiels, wo hoffentlich hoffentlich nicht in der Gleichung steht, gibt es eine Möglichkeit für mich, einen Pfad zuverlässig in eine Datei umzuwandeln?

**

    
akintayo 09.08.2010, 21:20
quelle

3 Antworten

1

Nicht, dass ich mir dessen bewusst bin.

Nach meinem Verständnis stellt eine Path in Hadoop eine Kennung für einen Knoten in ihrem verteilten Dateisystem dar. Dies ist eine andere Abstraktion von java.io.File , die einen Knoten im lokalen Dateisystem darstellt. Es ist unwahrscheinlich, dass eine Path könnte sogar eine File Repräsentation haben, die sich äquivalent verhält, weil die zugrundeliegenden Modelle sich grundlegend unterscheiden.

Daher der Mangel an Übersetzung. Ich vermute durch Ihre Behauptung, dass File Objekte sind "[mehr] nützlich", wollen Sie ein Objekt dieser Klasse, um vorhandene Bibliotheksmethoden zu verwenden? Aus den oben genannten Gründen wird dies nicht sehr gut funktionieren. Wenn es sich um eine eigene Bibliothek handelt, könnten Sie sie so umschreiben, dass sie sauber mit Hadoop-Pfaden arbeitet und dann alle Dateien in Pfadobjekte konvertiert (diese Richtung funktioniert, da Pfade eine strenge Obermenge von Dateien sind). Wenn es eine Bibliothek von Dritten ist, dann haben Sie kein Glück; Die Autoren dieser Methode haben die Auswirkungen eines verteilten Dateisystems nicht berücksichtigt und nur diese Methode geschrieben, um mit einfachen alten lokalen Dateien zu arbeiten.

    
Andrzej Doyle 09.08.2010, 21:35
quelle
11

Ich hatte kürzlich die gleiche Frage, und es gibt wirklich eine Möglichkeit, eine Datei aus einem Pfad zu bekommen, aber es erfordert das Herunterladen der Datei vorübergehend. Offensichtlich ist dies für viele Aufgaben nicht geeignet, aber wenn Zeit und Speicherplatz für Sie nicht wichtig sind und Sie nur etwas benötigen, um mit Dateien aus Hadoop zu arbeiten, gehen Sie folgendermaßen vor:

%Vor%     
Eli 07.02.2012 20:37
quelle
2

Wenn Sie ein LocalFileSystem erhalten

%Vor%

Sie können Ihr Hadoop-Pfadobjekt an localFileSystem.pathToFile

übergeben %Vor%     
James Gawron 27.07.2015 22:11
quelle

Tags und Links