Kafka Spark Scala Cassandra兼容版本

时间:2017-09-29 09:58:59

标签: scala apache-spark cassandra apache-kafka

我正在尝试使用Apache Kafka,Saprk,Scala和Cassandra创建一个应用程序。 但是我在获得这些工具的正确版本时遇到了很多问题。

有人可以告诉我应该使用哪个版本?

先谢谢..

2 个答案:

答案 0 :(得分:1)

以下是我们使用过的库的版本列表:

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-streaming-kafka-0-10_2.11</artifactId>
        <version>2.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka-clients</artifactId>
        <version>0.10.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka_2.11</artifactId>
        <version>0.10.2.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cassandra</groupId>
        <artifactId>apache-cassandra</artifactId>
        <version>3.10</version>
    </dependency>
    <dependency>
        <groupId>com.datastax.spark</groupId>
        <artifactId>spark-cassandra-connector_2.11</artifactId>
        <version>2.0.2</version>
    </dependency>

兼容性方面遇到的主要问题是不同的scala版本(2.10。*或2.11。*)。您将不得不关注它并看到所有依赖项使用相同的scala版本。我认为你可以毫不怀疑地更新所有版本,只要你在任何地方都考虑相同的scala版本。

以下是代码示例,它将帮助您开始:

       public static void main(String[] args) throws   InterruptedException {
           JavaStreamingContext jssc = new JavaStreamingContext(getSparkConfiguration(), Durations.seconds(5));

           JavaInputDStream<ConsumerRecord<String, LoggingEvent>> messages  =
            KafkaUtils.createDirectStream(
                    jssc,
                    LocationStrategies.PreferConsistent(),
                    ConsumerStrategies.<String, LoggingEvent>Subscribe(Arrays.asList("some_topic"), getKafkaParams("localhost:9092", "some_logging_group))
            );

           JavaDStream<LoggingEvent> loggingRecords = messages.map(
            (Function<ConsumerRecord<String, LoggingEvent>, LoggingEvent>) message -> message.value()
    );

             CassandraStreamingJavaUtil.javaFunctions(loggingRecords).writerBuilder("some_space", "some_table",
                  CassandraJavaUtil.mapToRow(LoggingEvent.class)).saveToCassandra();

          jssc.start();
          jssc.awaitTermination();
}

连接器中的映射是通过使用表列映射类中的字段来完成的。

对于设置,我们使用ansible和分发版本的存档与库依赖项列表中的相同。

答案 1 :(得分:0)

如果您对sbt版本感兴趣

libraryDependencies ++= {

  val sparkV = "2.1.0"
  val cassandraV = "2.0.0-M3"

  Seq(
    "org.apache.spark"      %% "spark-core" % sparkV,
    "org.apache.spark"      %% "spark-streaming" % sparkV,
    "org.apache.spark"      %% "spark-streaming-kafka-0-10" % sparkV,
    "org.apache.spark"      %% "spark-sql-kafka-0-10" % sparkV,
    "org.apache.spark"      %% "spark-sql" % sparkV,
    "org.apache.spark"      %% "spark-hive" % sparkV,
    "com.datastax.spark"    %% "spark-cassandra-connector" % cassandraV,
    "com.datastax.cassandra" % "cassandra-driver-core" % "3.2.0",
    "org.rogach"            %% "scallop" % "2.1.2"
  )

}