我想在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.cassandracassandra-driver-mapping3.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() log/apache/spark/executor/OutputMetrics;
更新我的诗歌后:com.datastax.cassandracassandra-driver-mapping3.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
Description资源路径位置类型丢失的工件com.datastax.spark:spark-cassandra-connector_2.11:jar:2.0.0-M2 pom.xml
Description资源路径位置类型丢失的工件com.datastax.spark:spark-cassandra-connector_2.11:jar:2.0.0-M2 pom.xml
此时,使用包存储库中的2.0.0-M2。不需要添加任何其他依赖项,因为它们会被自动标记和检索。Spark 2.0.0的默认Scala版本是2.11,所以一定要选择2.11的包。
一般情况下,您需要与您正在使用的Spark版本匹配的最新版本。
——回答问题
如果您运行的是2.0版本,请将Spark版本更改为2.0。删除对-java
模块的引用,因为这些文件是主要依赖的一部分。