我需要将azure blob容器中的所有文件读入spark RDD。我正在使用azure HDInsight,我的群集配置在与输入目录相同的存储帐户中。
是否有任何用于实现此目的的Java API /示例?
答案 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]而不是逗号分隔列表。