在火花java中扫描天蓝色blob商店容器

时间:2016-10-07 16:59:25

标签: java azure apache-spark hdinsight

我需要将azure blob容器中的所有文件读入spark RDD。我正在使用azure HDInsight,我的群集配置在与输入目录相同的存储帐户中。

是否有任何用于实现此目的的Java API /示例?

2 个答案:

答案 0 :(得分:0)

它看起来像常规的Spark Java示例,只需使用" wasb://"文件系统引用blob存储容器:

import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
Dataset<Row> df = spark.read().json("wasb://yourcontainer@yourstorageaccount.blob.core.windows.net/people.json");

有关Java API的更多详细信息,请访问spark网站(单击Java选项卡):https://spark.apache.org/docs/2.0.0/sql-programming-guide.html#creating-dataframes

答案 1 :(得分:0)

@maxiluk没有完全回答这个问题。所以我将提供更多细节。他给出的例子将加载一个json文件。要加载整个json文件目录,可以使用通配符(这将加载整个容器):

import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
Dataset<Row> df = spark.read().json("wasb://yourcontainer@yourstorageaccount.blob.core.windows.net/*");

如果要加载多个目录,但不是全部,则可以传递逗号分隔的目录列表:(如果您需要更多详细信息,请查看Code

Dataset<Row> df = spark.read().json("wasb://yourcontainer@yourstorageaccount.blob.core.windows.net/2016/10/01/*,wasb://yourcontainer@yourstorageaccount.blob.core.windows.net/2016/10/02/*");

根据您使用的spark版本,如果您有SqlContext或只是SparkContext,您也可以传入路径的Seq [String]而不是逗号分隔列表。