2016-09-21 51 views
0

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

我试图运行下面的示例:

// 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.Tas kMetrics.outputMetrics()Lorg /阿帕奇/火花/执行/ 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:火花卡桑德拉 - connector_2.11中:jar:2.0.0-M2的pom.xml

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

+0

你在使用Scala吗?有两个版本的Scala。 – Sreekar

+0

对不起,没有即时通讯使用Java – Chris

回答

1

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

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

- 在回应质疑编辑

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

+0

感谢Russ快速回答! – Chris

+0

我试图运行下面的例子(记得使用Spark 2.0和C * 3.7): – Chris