7

Mam problem podczas odczytu danych z lazurowych bąble poprzez iskry strumieniowe kododczytu danych z Azure Blob z Spark

JavaDStream<String> lines = ssc.textFileStream("hdfs://ip:8020/directory"); 

jak powyżej pracuje HDFS, ale nie jest w stanie odczytać plik z Azure blob

https://blobstorage.blob.core.windows.net/containerid/folder1/ 

Powyżej znajduje się ścieżka wyświetlana w błękitnym interfejsie użytkownika, ale to nie działa, czy czegoś brakuje i jak możemy uzyskać do niego dostęp.

wiem Eventhub są idealnym wyborem dla strumieniowego przesyłania danych, ale moje obecne wymaga tego sytuacja w użyciu pamięci masowej, a następnie kolejek

Odpowiedz

7

Aby odczytać dane z pamięci blob, są dwie rzeczy, które muszą być wykonane. Najpierw musisz powiedzieć Sparkowi, z jakiego natywnego systemu plików korzystać w podstawowej konfiguracji Hadoop. Oznacza to, że również potrzebują Hadoop-Azure JAR być dostępny na ścieżce klas (pamiętać, że wymagania może uruchomieniowe dla bardziej JAR związanych z rodziną Hadoop):

JavaSparkContext ct = new JavaSparkContext(); 
Configuration config = ct.hadoopConfiguration(); 
config.set("fs.azure", "org.apache.hadoop.fs.azure.NativeAzureFileSystem"); 
config.set("fs.azure.account.key.youraccount.blob.core.windows.net", "yourkey"); 

teraz, zadzwoń na pliku przy użyciu prefiksu wasb:// (należy zwrócić uwagę na [s] jest dla opcjonalnego bezpiecznego połączenia):

ssc.textFileStream("wasb[s]://<BlobStorageContainerName>@<StorageAccountName>.blob.core.windows.net/<path>"); 

to oczywiste, że trzeba mieć odpowiednie uprawnienia określone z lokalizacji składającego zapytanie do przechowywania blob.

+0

Dzięki, próbowałem, ale myślę, że nadal coś się dzieje, czy można wskazać łącze do działającego przykładu. – duck

+0

Nie mam działającego samouczka. Jaki wyjątek występuje? –

+0

To działało, to był problem zależności. – duck

1

Jako uzupełnienie, istnieje samouczek dotyczący zgodnego z HDFS magazynu Azure Blob z Hadoop, który jest bardzo pomocny, patrz: https://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-use-blob-storage.

Tymczasem na platformie GitHub dla Spark streaming na platformie Azure znajduje się oficjalny sample. Niestety, próbka jest napisana dla Scali, ale myślę, że nadal jest dla ciebie przydatna.

+2

Nie widzę nic, co byłoby związane z odczytem z magazynu blob w przykładzie. Przeczytałem także pierwszy link i nic tam nie widzę, bezpośrednio wyjaśniając, jak dostarczyć "NativeAzureFileSystem" do Sparka. Myślę, że byłoby dobrze, gdybyście przedstawili konkretny przykład wykorzystania magazynu blob jako bazowego katalogu punktów kontrolnych dla Sparka. –