【发布时间】:2017-03-28 22:43:23
【问题描述】:
我编写了以下代码来使用 Spark Job 使用数据,
检索后是否缺少流式 kafka 或处理数据的内容?如何测试数据是否被检索?
// StreamingExamples.setStreamingLogLevels();
SparkConf sparkConf = new SparkConf().setAppName("JavaKafkaWordCount").setMaster("local[*]");
;
// Create the context with 2 seconds batch size
JavaStreamingContext jssc = new JavaStreamingContext(sparkConf, new Duration(1000));
Map<String, Integer> topicMap = new HashMap<>();
topicMap.put("Ptopic", 1);
JavaPairReceiverInputDStream<String, String> messages = KafkaUtils.createStream(jssc, "localhost:2181", "5",
topicMap);
/*messages.foreach(new Function<JavaRDD<String, String>, Void>() {
public Void call(JavaRDD<String, String> accessLogs) {
return null;
}}
);*/
JavaDStream<String> lines = messages.map(new Function<Tuple2<String, String>, String>() {
@Override
public String call(Tuple2<String, String> tuple2) {
/*System.out.println(tuple2._1().toString());
System.out.println(tuple2._2().toString());*/
return tuple2._2();
}
});
lines.print();
jssc.start();
jssc.awaitTermination();
这里的结果只是打印..
【问题讨论】:
-
你检查过这个:spark.apache.org/docs/1.6.1/streaming-kafka-integration.html 吗?也许首先通过终端创建一个 kafka 生产者和消费者是一个好主意。如果可行,您应该开始尝试集成 spark。
-
是的。我试过了。在这段代码中,我可以在“lines”变量中得到结果,但是现在如何使用 forEachRDD 获取检索字符串?这样我就可以对这个字符串执行一些操作
-
你可以使用后面的数据库来下沉你的 RDD。如图所示:spark.apache.org/docs/latest/img/streaming-arch.png之后就可以加载数据并进行一些操作了
-
我有两种需求,有时需要与数据库同步,有时需要存储到另一个 kafka 队列中
标签: java apache-spark apache-kafka distributed-computing