0

我正在使用Cassandra 2.2.8,JDK8,spark-cassandra-connector-java_2.10,spark-cassandra-connector_2.11-2.0.0-M3,cassandra-driver-core-3.1 .0及以下 Cassandra Spark Connector Example JavaDemo。此演示必須修復以使用新的2.1 Connetcor API進行編譯。我有固定的幾件事情,但是這下面的一個被絆倒了我:在這行 編譯錯誤:Cassandra Spark連接器JavaDemo編譯錯誤

JavaPairRDD<Integer, BigDecimal> allSalesRDD = joinedRDD.flatMap(new PairFlatMapFunction<Tuple2<Integer, Tuple2<Sale, Product>>, Integer, BigDecimal>() { 
     @Override 
     public Iterable<Tuple2<Integer, BigDecimal>> call(Tuple2<Integer, Tuple2<Sale, Product>> input) throws Exception { 

錯誤:

The method 
    flatMap(FlatMapFunction<Tuple2<Integer,Tuple2<SparkJavaDemo.Sale,SparkJavaDemo.Product>>,U>) in the type 
     AbstractJavaRDDLike<Tuple2<Integer,Tuple2<SparkJavaDemo.Sale,SparkJavaDemo.Product>>,JavaPairRDD<Integer,Tuple2<SparkJavaDemo. 
     Sale,SparkJavaDemo.Product>>> is not applicable for the arguments (new 
     PairFlatMapFunction<Tuple2<Integer,Tuple2<SparkJavaDemo.Sale,SparkJavaDemo.Product>>,Integer,BigDecimal>(){}) 

感謝

回答

1

可以使用flatMapToPair代替flatMap如下所示。

JavaPairRDD<Integer, BigDecimal> allSalesRDD = joinedRDD.flatMapToPair(new PairFlatMapFunction<Tuple2<Integer, Tuple2<Sale, Product>>, Integer, BigDecimal>() { 
     @Override 
     public Iterator<Tuple2<Integer, BigDecimal>> call(Tuple2<Integer, Tuple2<Sale, Product>> input) throws Exception { 
      Tuple2<Sale, Product> saleWithProduct = input._2(); 
      List<Tuple2<Integer, BigDecimal>> allSales = new ArrayList<>(saleWithProduct._2().getParents().size() + 1); 
      allSales.add(new Tuple2<>(saleWithProduct._1().getProduct(), saleWithProduct._1().getPrice())); 
      for (Integer parentProduct : saleWithProduct._2().getParents()) { 
       allSales.add(new Tuple2<>(parentProduct, saleWithProduct._1().getPrice())); 
      } 
      return allSales.iterator(); 
     } 
    }); 

我在https://gist.github.com/baghelamit/f2963d9e37acc55474559104f5f16cf1

+0

試圖創造了更新的代碼要點這個**得到一個不同的錯誤,現在**:'公衆的Iterator >通話(Tuple2 <整數,Tuple2 <銷售,產品>>輸入)**返回類型不兼容**與 \t PairFlatMapFunction >,Integer,BigDecimal> .call(Tuple2 >)' –

+0

當我使用核心3.1 java驅動程序(與2.1協同工作)時,會出現單獨的編譯錯誤資源類型Session會not implementation \t java.lang.AutoCloseable try(Session session = connector.openSession())' –

+0

我已經更新了JavaDemo的pom.xml和java類。更新的文件位於https://gist.github.com/baghelamit/f2963d9e37acc55474559104f5f16cf1。你檢查了嗎? – abaghel