0

我想知道Apache Beam是否支持Windows azure存储blob文件(wasb)IO。有没有支持?Apache Beam中的Azure Blob支持?

我在问,因为我部署了一个apache beam应用程序来在Azure Spark群集上运行作业,基本上不可能从与该spark集群关联的存储容器中创建IO wasb文件。有其他解决方案吗?

语境:我想在我的Azure的星火集群运行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 

我在想实现一个自定义IO为Apache在这种情况下,Azure存储Blob是一个解决方案,如果这是一种替代解决方案,我想与社区进行核实。

回答

2

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

有在Apache梁项目的积极努力,增加了对HadoopFileSystem支持。我相信WASB在hadoop-azure module中有一个连接器HadoopFileSystem。这将使WASB间接与Beam合作 - 这可能是最简单的方法,并且它应该很快就绪。

现在,在Beam中为WASB提供本机支持将是一件好事。这可能有助于实现另一个级别的绩效,并且实施起来应该相对简单。据我所知,没有人正在积极努力,但这将是对该项目的一个巨大贡献! (如果你是在促进个人兴趣,请联络!)

+2

让我们使用Apache Beam的[开发者邮件列表(https://beam.apache.org/get-started/support/)。而且,如果我可能会问,请从上面的评论中删除我的电子邮件地址 - 您知道,抓取工具等等;-)谢谢。 –