2017-05-18 5 views
1

Ich versuche zu verstehen, wie mount funktioniert. Ich habe einen S3-Bucket namens myB und einen Ordner namens test. Ich habe eine Halterung mitMount S3 zu Databricks

var AwsBucketName = "myB" 
val MountName = "myB" 

Meine Frage ist, dass: es eine Verbindung zwischen S3 schafft myB und databricks und würde databricks Zugriff auf alle Dateien, die Dateien unter test Ordner enthalten? (Oder wenn ich eine Aufnahme mit var tun AwsBucketName = "myB/test" ist es verknüpfen nur databricks in diesen Ordner test aber nicht anyother Dateien, die außerhalb des Ordners?)

Wenn ja, wie soll ich sagen Liste Dateien in test Ordner, lesen Sie diese Datei oder oder count() eine CSV-Datei in Scala? Ich habe eine display(dbutils.fs.ls("/mnt/myB")) und es zeigt nur den Testordner, aber keine Dateien darin. Ganz neu hier. Vielen Dank für deine Hilfe!

Antwort

1

Von der Databricks Dokumentation:

// Replace with your values 
val AccessKey = "YOUR_ACCESS_KEY" 
// Encode the Secret Key as that can contain "/" 
val SecretKey = "YOUR_SECRET_KEY".replace("/", "%2F") 
val AwsBucketName = "MY_BUCKET" 
val MountName = "MOUNT_NAME" 

dbutils.fs.mount(s"s3a://$AccessKey:[email protected]$AwsBucketName", s"/mnt/$MountName") 
display(dbutils.fs.ls(s"/mnt/$MountName")) 

Wenn Sie nicht in der Lage sind zu sehen, Dateien in Ihrem hängten Verzeichnis es möglich ist, dass Sie ein Verzeichnis unter/mnt erstellt haben, das nicht ein Link zu dem s3 Eimer ist. Versuchen Sie in diesem Fall, das Verzeichnis (dbfs.fs.rm) zu löschen und erneut zu mounten, indem Sie das obige Codebeispiel verwenden. Beachten Sie, dass Sie Ihre AWS-Anmeldeinformationen (AccessKey und SecretKey oben) benötigen. Wenn Sie sie nicht kennen, müssen Sie Ihren AWS-Kontoadministrator nach ihnen fragen.