使用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