从checkpoint加载的spark streamingcontext没有hadoopConf设置

时间:2017-03-29 14:10:31

标签: azure apache-spark spark-streaming

无法使用wasbs://...网址从检查点恢复到Azure blob存储空间

在群集模式下使用Standalone Spark 2.0.2。

val ssc = StreamingContext.getOrCreate(checkpointPath, () => createSSC(), hadoopConf)

我通过fs.azure中的fs.azure.account.key.$account.blob.core.windows.net设置hadoopConfhadoopConf.set,并通过sparkSession.sparkContext.hadoopConfiguration.set

在createSSC函数中冗余设置

作业在运行时成功写入检查点文件并运行直到我停止它。

当我重新启动它时,从检查点数据创建的上下文没有hadoopConf信息来重新访问wasbs://存储并抛出错误,说它无法创建具有匿名访问权限的容器。

我错过了什么?我发现了一些关于S3的类似帖子,但没有明确的解决方案。

错误:

enter image description here

更多详细信息:从kafka 0.10.1.1连接器中的检查点重新启动后会发生这种情况,并且我已确认附加到该RDD的sparkContext.hadoopConf确实具有正确的密钥。

1 个答案:

答案 0 :(得分:0)

解决方法:

将钥匙放入火花core-site.xml。我试图避免这种情况,因为凭据是部署时设置 - 我不会在编译时或docker映像构建时设置它们。

在我的容器调用spark-submit之前,它现在从下面的模板创建/opt/spark/conf/core-site.xml文件:

<?xml version="1.0"?>
<configuration>

  <property>
    <name>fs.azure</name>
    <value>org.apache.hadoop.fs.azure.NativeAzureFileSystem</value>
  </property>

  <property>
    <name>fs.azure.account.key.[CHECKPOINT_BLOB_ACCOUNT].blob.core.windows.net</name>
    <value>[CHECKPOINT_BLOB_KEY]</value>
  </property>

</configuration>