Cassandra 3.7上的Spark 2.0 - 包含哪些maven依赖项?

时间:2016-09-21 15:39:15

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

我想在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         卡桑德拉驱动器映射         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           卡桑德拉驱动器映射           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

1 个答案:

答案 0 :(得分:1)

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

一般情况下,您需要的是与您正在使用的Spark版本相匹配的最新版本。

- 回答问题编辑

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