无法在本地运行amazon deequ示例

mdfafbf1  于 2021-05-17  发布在  Spark
关注(0)|答案(2)|浏览(626)

我试图在本地运行和测试amazondequ库,但是对于各种示例,我反复得到类notfound错误。精确误差

java.lang.NoClassDefFoundError: scala/Product$class
  at com.amazon.deequ.profiles.ColumnProfilerRunBuilderFileOutputOptions.<init>(ColumnProfilerRunner.scala:31)
  at com.amazon.deequ.profiles.ColumnProfilerRunBuilder.run(ColumnProfilerRunBuilder.scala:174)
  ... 47 elided
Caused by: java.lang.ClassNotFoundException: scala.Product$class
  at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
  at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:566)
  at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
  ... 49 more

val suggestionResult = ConstraintSuggestionRunner().onData(input).addConstraintRules(Rules.DEFAULT).run()
java.lang.NoClassDefFoundError: scala/Product$class
  at com.amazon.deequ.suggestions.rules.CompleteIfCompleteRule.<init>(CompleteIfCompleteRule.scala:25)
  at com.amazon.deequ.suggestions.Rules$.<init>(ConstraintSuggestionRunner.scala:33)
  at com.amazon.deequ.suggestions.Rules$.<clinit>(ConstraintSuggestionRunner.scala)
  ... 49 elided

我遵循的代码是我使用spark submit--class--packages com.amazon的示例中给出的代码。deequ:deequ:1.0.4
我也试过使用sparkshell-jars,试过一行一行地运行,但仍然得到相同的结果

cbwuti44

cbwuti441#

这个问题与deequ无关,但可能是由错误的scala版本引起的。deequ目前只支持scala 2.11。请确保您使用的是正确的版本。
有关noclassdeffounderror:scala/product$class的更多详细信息,请参见此答案。

dy2hfwbg

dy2hfwbg2#

您使用的deequ版本不适用于使用scala2.12编译的spark3.0,因此它导致了这个错误(正如philipp所指出的)。所以有两种可能的解决方案:
使用与deequ 1.0.4兼容的spark 2.4.x
使用以下命令从源代码编译deequ: mvn clean install -DskipTests -Pscala-2.12 -Pspark-3.0 ,然后您可以将其与spark shell一起使用,如下所示: bin/spark-shell --jars <path-to-deequ-checkout>/target/deequ_2.12-1.1.0-SNAPSHOT.jar (很遗憾,我们不能使用 --packages 因为maven中的构建问题)
p、 最好抓取最新的spark->3.0.1-预览版发布得太久了

相关问题