2016-09-21 71 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