首页 > 解决方案 > 无法使用 Spark 在 Datastax 上初始化图形

问题描述

我正在尝试使用 Spark 初始化我的 Datastax 图,如下所示:

val graphBuilder = spark.dseGraph("GRAPH_NAME")

但我有以下例外:

Exception in thread "main" java.lang.NoClassDefFoundError: com/datastax/bdp/graph/impl/element/vertex/id/AbstractVertexIdExternalImpl
at com.datastax.bdp.graph.spark.graphframe.DseGraphFrameBuilder$.apply(DseGraphFrameBuilder.scala:257)
at com.datastax.bdp.graph.spark.graphframe.SparkSessionFunctions.dseGraph(SparkSessionFunctions.scala:20)

我搜索了一个包含com/datastax/bdp/graph/impl但没有找到的 dataxtax jar。

非常感谢任何帮助。提前致谢!

标签: apache-sparkcassandradatastax-enterprise-graphdse-graph-frames

解决方案


要在外部 Spark 上运行的程序中使用 DseGraphFrames,您需要链接所谓的BYOS jar。这可以按以下方式完成(对于 Maven):

<dependency>
  <groupId>com.datastax.dse</groupId>
  <artifactId>dse-byos_2.11</artifactId>
  <version>6.0.4</version>
</dependency>

并添加 DataStax 存储库:

<repositories>
    <repository>
      <id>DataStax-Repo</id>
      <url>https://repo.datastax.com/public-repos/</url>
    </repository>
</repositories>

如果您检查从 DataStax 存储库中获取的 jar,它包含必要的文件:

unzip -l dse-byos_2.11-6.0.4.jar|grep AbstractVertexIdExternalImpl
     2839  10-06-2018 15:22   com/datastax/bdp/graph/impl/element/vertex/id/AbstractVertexIdExternalImpl.class

推荐阅读