繁体   English   中英

Apache Beam是否支持Azure Blob?

[英]Azure Blob support in Apache Beam?

我想知道Apache Beam是否支持Windows Azure存储blob文件(wasb)IO。 有什么支持吗?

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

上下文 :我正在尝试在Azure Spark群集上运行WordCount示例 已经有设置说明一些部件这里相信会帮助我。 以下是我在代码中设置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实现针对Apache Beam的自定义IO,如果这是一种解决方案,我想与社区联系,以了解这是否是替代解决方案。

Apache的光束不会在这个时候有针对Windows Azure存储的Blob(WASB)内置的连接器。

Apache Beam项目正在积极努力,以增加对HadoopFileSystem支持。 我相信WASB有一个连接器HadoopFileSystemhadoop-azure模块 这将使WASB可以间接与Beam一起使用-这可能是最简单的前进之路,并且应该很快就准备好。

现在,在Beam中拥有WASB的本地支持将是很棒的。 这可能会提高性能的另一个水平,并且应该相对容易实现。 据我所知,没有人在积极地进行这项工作,但这将对该项目做出巨大的贡献! (如果您个人有贡献,请联系!)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM