【发布时间】:2016-10-11 02:17:17
【问题描述】:
我需要将 azure blob 容器中的所有文件读入 spark RDD。我使用的是 azure HDInsight,我的集群配置在与输入目录相同的存储帐户中。
是否有任何 java API / 示例可以实现这一点?
【问题讨论】:
标签: java azure apache-spark azure-hdinsight
我需要将 azure blob 容器中的所有文件读入 spark RDD。我使用的是 azure HDInsight,我的集群配置在与输入目录相同的存储帐户中。
是否有任何 java API / 示例可以实现这一点?
【问题讨论】:
标签: java azure apache-spark azure-hdinsight
它看起来像常规的 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
【讨论】:
@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] 而不是逗号分隔的列表。
【讨论】: