【问题标题】:Spark 2.0 on Cassandra 3.7 -- Which maven dependencies to include?Cassandra 3.7 上的 Spark 2.0 -- 要包含哪些 maven 依赖项?
【发布时间】:2016-09-22 03:28:43
【问题描述】:

我想在 Cassandra 上使用 Spark。我目前已经安装了 Spark 2.0 和 Cassandra 3.7。我应该使用哪个版本的 spark-cassandra-connector 以及我必须包含哪些其他 maven 依赖项?还是我必须回退到旧版本的 Spark 和/或 Cassandra?

我正在尝试运行以下示例:

  // Generate products hierarchy
  final List<Product> products = Arrays.asList(
    new Product(0, "All Products", Collections.<Integer>emptyList()),
    new Product(1, "Product A", Arrays.asList(0)),
    new Product(4, "Product A1", Arrays.asList(0,1)),
    new Product(5, "Product A2", Arrays.asList(0,1)),
    new Product(2, "Product B", Arrays.asList(0)),
    new Product(6, "Product B1", Arrays.asList(0,2)),
    new Product(7, "Product B2", Arrays.asList(0,2)),
    new Product(3, "Product C", Arrays.asList(0)),
    new Product(8, "Product C1", Arrays.asList(0,3)),
    new Product(9, "Product C2", Arrays.asList(0,3))
  );

  // Store product hierarchy in Cassandra
  JavaRDD<Product> productsRdd = sc.parallelize(products);
  javaFunctions(productsRdd).writerBuilder("sales_planning", "products", mapToRow(Product.class)).saveToCassandra();

我的 POM 看起来像: ... com.datastax.cassandra cassandra 驱动程序映射 3.1.0

<dependency>
   <groupId>org.apache.spark</groupId>
   <artifactId>spark-core_2.11</artifactId>
   <version>1.6.2</version>
</dependency>

<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-sql_2.11</artifactId>
  <version>1.6.2</version>
</dependency>

<dependency> <!-- Spark Cassandra Connector -->
   <groupId>com.datastax.spark</groupId>
   <artifactId>spark-cassandra-connector_2.11</artifactId>
   <version>2.0.0-M2</version>
</dependency>  

<dependency>
   <groupId>com.datastax.spark</groupId>
   <artifactId>spark-cassandra-connector-java_2.11</artifactId>
   <version>1.6.0-M1</version>
</dependency>

</dependencies>
...

运行示例代码得到以下异常:org.apache.spark.executor.TaskMetrics.outputMetrics()Lorg/apache/spark/executor/OutputMetrics;

将我的 pom 更新为: com.datastax.cassandra cassandra 驱动程序映射 3.1.0

   <dependency>
     <groupId>org.apache.spark</groupId>
     <artifactId>spark-core_2.11</artifactId>
     <version>2.0.0</version>
   </dependency>

   <dependency>
     <groupId>org.apache.spark</groupId>
     <artifactId>spark-sql_2.11</artifactId>
     <version>2.0.0</version>
   </dependency>

   <dependency> <!-- Spark Cassandra Connector -->
     <groupId>com.datastax.spark</groupId>
     <artifactId>spark-cassandra-connector_2.11</artifactId>
     <version>2.0.0-M2</version>
   </dependency>  
 </dependencies>

我现在有 Eclipse 标记我的 POM 文件并给我(以及其他): 说明 资源路径 位置 类型 无法读取 org.mortbay.jetty:jetty-util:jar:6.1.26 的工件描述符

描述资源路径位置类型 缺少工件 com.datastax.spark:spark-cassandra-connector_2.11:jar:2.0.0-M2 pom.xml

描述资源路径位置类型 缺少工件 com.datastax.spark:spark-cassandra-connector_2.11:jar:2.0.0-M2 pom.xml

【问题讨论】:

  • 你在使用 Scala 吗? Scala 有两个版本。
  • 抱歉,我没有使用 Java

标签: apache-spark cassandra spark-cassandra-connector


【解决方案1】:

此时,使用来自packages 存储库的 2.0.0-M2。无需添加任何其他依赖项,因为它们会自动标记和检索。 Spark 2.0.0 的默认 Scala 版本是 2.11,因此请务必选择 2.11 包。

一般来说,您需要与您正在使用的 Spark 版本相匹配的最新版本。

--回答问题编辑

如果您正在运行,请将 Spark 版本更改为 2.0。删除对 -java 模块的引用,因为这些文件是主要依赖项的一部分。

【讨论】:

  • 感谢 Russ 的快速回答!
  • 我正在尝试运行以下示例(请记住使用 Spark 2.0 和 C* 3.7):
猜你喜欢
  • 1970-01-01
  • 2011-01-15
  • 2016-03-13
  • 2012-11-11
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 1970-01-01
  • 2017-01-23
相关资源
最近更新 更多