【问题标题】:Azure Blob support in Apache Beam?Apache Beam 中的 Azure Blob 支持?
【发布时间】:2017-05-14 04:37:45
【问题描述】:

我想知道 Apache Beam 是否支持 windows azure storage blob files(wasb) IO。还支持吗?

我之所以问,是因为我已经部署了一个 Apache Beam 应用程序来在 Azure Spark 集群上运行一项作业,并且基本上不可能从与该 Spark 集群相关联的存储容器中 IO wasb 文件。有没有替代方案?

上下文:我正在尝试在我的 Azure Spark 集群上运行 WordCount example。已经按照here 的说明设置了一些组件,相信这会对我有所帮助。下面是我设置 hadoop 配置的代码部分:

final SparkPipelineOptions options = PipelineOptionsFactory.create().as(SparkPipelineOptions.class);

options.setAppName("WordCountExample");
options.setRunner(SparkRunner.class);
options.setSparkMaster("yarn");
JavaSparkContext context = new JavaSparkContext();
Configuration conf = context.hadoopConfiguration();
conf.set("fs.azure", "org.apache.hadoop.fs.azure.NativeAzureFileSystem");
conf.set("fs.azure.account.key.<storage-account>.blob.core.windows.net",
         "<key>");
options.setProvidedSparkContext(context);
Pipeline pipeline = Pipeline.create(options);

但不幸的是,我一直以以下错误结束:

java.lang.IllegalStateException: Failed to validate wasb://<storage-container>@<storage-account>.blob.core.windows.net/user/spark/kinglear.txt
at org.apache.beam.sdk.io.TextIO$Read$Bound.apply(TextIO.java:288)
at org.apache.beam.sdk.io.TextIO$Read$Bound.apply(TextIO.java:195)
at org.apache.beam.sdk.runners.PipelineRunner.apply(PipelineRunner.java:76)
at org.apache.beam.runners.spark.SparkRunner.apply(SparkRunner.java:129)
at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:400)
at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:323)
at org.apache.beam.sdk.values.PBegin.apply(PBegin.java:58)
at org.apache.beam.sdk.Pipeline.apply(Pipeline.java:173)
at spark.example.WordCount.main(WordCount.java:47)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:627)
Caused by: java.io.IOException: Unable to find handler for  wasb://<storage-container>@<storage-account>.blob.core.windows.net/user/spark/kinglear.txt
at org.apache.beam.sdk.util.IOChannelUtils.getFactory(IOChannelUtils.java:187)
at org.apache.beam.sdk.io.TextIO$Read$Bound.apply(TextIO.java:283)
... 13 more

我正在考虑在这种情况下为 Azure 存储 Blob 实现一个自定义 IO,如果作为解决方案,我想与社区确认这是一个替代解决方案。

【问题讨论】:

    标签: java apache-spark azure-storage azure-blob-storage apache-beam


    【解决方案1】:

    Apache Beam 目前没有用于 Windows Azure 存储 Blob (WASB) 的内置连接器

    Apache Beam 项目正在积极努力增加对HadoopFileSystem 的支持。我相信 WASB 在hadoop-azure module 中有一个用于HadoopFileSystem 的连接器。这将使 WASB 可以间接地与 Beam 一起使用——这可能是最简单的前进道路,而且应该很快就会准备就绪。

    现在,如果能在 Beam 中原生支持 WASB,那就太好了。它可能会实现另一个级别的性能,并且应该相对简单地实施。据我所知,没有人积极致力于它,但这将是对该项目的一个了不起的贡献! (如果您个人有兴趣贡献,请联系!)

    【讨论】:

    • 让我们使用 Apache Beam 的developer mailing list。而且,如果我可能会问,请从您上面的评论中删除我的电子邮件地址 - 你知道,爬虫等 ;-) 谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 2022-01-12
    • 1970-01-01
    相关资源
    最近更新 更多