使用 Spark 从 Azure Blob 读取数据
Reading data from Azure Blob with Spark
我在通过 spark 流从 azure blob 读取数据时遇到问题
JavaDStream<String> lines = ssc.textFileStream("hdfs://ip:8020/directory");
上面的代码适用于 HDFS,但无法从 Azure blob 读取文件
https://blobstorage.blob.core.windows.net/containerid/folder1/
上面是天蓝色显示的路径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 存储进行查询的位置设置适当的权限。
作为补充,有一个关于使用 Hadoop 兼容 HDFS 的 Azure Blob 存储的教程非常有用,请参阅 https://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-use-blob-storage。
同时,在 GitHub 上有一个官方 sample 用于 Azure 上的 Spark 流式处理。不幸的是,该示例是为 Scala 编写的,但我认为它对您仍然有帮助。
df = spark.read.format(“csv”).load(“wasbs://blob_container@account_name.blob.core.windows.net/example.csv”, inferSchema = True)
我在通过 spark 流从 azure blob 读取数据时遇到问题
JavaDStream<String> lines = ssc.textFileStream("hdfs://ip:8020/directory");
上面的代码适用于 HDFS,但无法从 Azure blob 读取文件
https://blobstorage.blob.core.windows.net/containerid/folder1/
上面是天蓝色显示的路径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 存储进行查询的位置设置适当的权限。
作为补充,有一个关于使用 Hadoop 兼容 HDFS 的 Azure Blob 存储的教程非常有用,请参阅 https://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-use-blob-storage。
同时,在 GitHub 上有一个官方 sample 用于 Azure 上的 Spark 流式处理。不幸的是,该示例是为 Scala 编写的,但我认为它对您仍然有帮助。
df = spark.read.format(“csv”).load(“wasbs://blob_container@account_name.blob.core.windows.net/example.csv”, inferSchema = True)