使用Spark从Azure Blob读取数据

我在通过火花流从天蓝色斑点读取数据时遇到问题

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

上面的代码适用于HDFS,但无法从Azure blob读取文件

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

上面是在azure UI中显示的路径,但是这行不通,我是否丢失了某些内容,以及如何访问它。

我知道Eventhub是流数据的理想选择,但是我目前的情况要求使用存储而不是队列

回答:

为了从Blob存储中读取数据,需要完成两件事。首先,您需要告诉Spark在基础Hadoop配置中使用哪个本机文件系统。这意味着您还需要在类路径中使用Hadoop-

Azure JAR(请注意,与Hadoop系列相关的更多JAR可能对运行时有要求):

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");

现在,使用wasb://前缀调用文件(注意,[s]用于可选的安全连接):

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

不用说,您需要从进行查询的位置到Blob存储设置适当的权限。

以上是 使用Spark从Azure Blob读取数据 的全部内容, 来源链接: utcz.com/qa/419889.html

回到顶部