azure - 使用 blobproperties.getcreatedtime 时 SparkHDInsights 群集不起作用
问题描述
我正在使用 SparkHDInsights 集群使用 spark-submit 命令运行 jar。我用过
libraryDependencies += "com.microsoft.azure" % "azure-storage" % "8.1.0"
在 sbt 文件中。
该程序在本地运行良好。只有在尝试在集群上运行时才会创建异常。我相信它使用的库"com.microsoft.azure" % "azure-storage" % "5.3.0"
可能是 Azure HDI 集群中的默认选项。
程序片段是:
val blob = blobInDir.asInstanceOf[CloudBlockBlob]
var blobtime = blob.getProperties.getCreatedTime().getTime
我收到如下错误:
Exception in thread "main" java.lang.NoSuchMethodError: com.microsoft.azure.storage.blob.BlobProperties.getCreatedTime()Ljava/util/Date;
解决方案
根据您的错误信息,我尝试查看 Azure Storage for Java 的源代码以找出问题原因。然后,我发现当版本低于getCreatedTime
. 同时,该库是对 HDInsight 的依赖,其版本要求为最新版本,如下所示。BlobProperties
azure-storage
v7.1.0-Preview
azure-storage
hadoop-azure
7.0.0
3.2.0
hadoop-azure
所以你不能通过升级 HDInsight 来解决这个问题,但是你可以使用你的 jar 文件来覆盖 HDInsight 中的相关 jar 文件,方法是设置下面的配置选项来更改类路径加载的优先级,使你的程序像在本地一样运行。
- 设定
spark.driver.userClassPathFirst
值为true
,请看下面的官方含义。
- 设定
spark.executor.userClassPathFirst
值为true
,请看下面的官方含义。
您可以在文件中设置上述选项spark.conf
或通过spark-submit
.
推荐阅读
- geometry - 如何在没有三角函数的情况下缩放 2D 旋转矢量?
- ios - 如何更新可重用 tableView 单元格中 UITextfield 中的文本值,每个单元格中的值不同
- java - 如何正确设置匿名类中的字段并在主类中使用它们?
- php - 在 Symfony4 中保存文件没有任何作用
- ruby-on-rails - 应用程序未创建会话且 @current_user 无法正常工作
- python-3.x - Python Tkinter GUI 文件菜单不显示,但 GUI 可操作
- python - 有条件地创建零梯度的自定义 Keras 损失函数
- delphi - 同时在多个控件之间共享一个 TDataSource 是否安全?
- javascript - 如何排列成另一个阵列?
- mysql - 为什么在嵌套查询中创建别名时出现语法错误?