ieda 远程调试hive_Windows下idea远程调试Spark Streaming接收Kafka数据

本文介绍了在Windows环境下,如何使用IDEA远程调试Spark Streaming应用程序,连接Linux服务器上的Kafka和Zookeeper进行数据处理。通过设置Spark配置、创建Spark Streaming流并监听Kafka主题,实现了数据的接收和统计。调试过程中发现,Spark Streaming需要开启多个local进程以正确消费和处理Kafka数据。
摘要由CSDN通过智能技术生成

大数据集群环境说明

Spark版本:2.0.2

Kafka版本:0.9.1

Linux系统:CentOS6.5

场景

做Spark Streaming开发,在Win7下使用IDE进行开发,希望在本地IDEA上远程连接服务器上的大数据集群进行调试,这里仅连服务器上的Kafka和Zookeeper服务

我这里在Windows下使用IDEA进行开发,相信本文章对Eclipse的朋友也有帮助

服务器上的大数据集群已经全部安装好了(Hadoop、Hive、HBase、Spark、Flume、Sqoop、Zookeeper、Hue等等)

这里Kafka的安装、Spark的安装、以及其他大数据服务的安装不再赘述

操作

第一步:后台启动Kafka

nohup bin/kafka-server-start.sh config/server.properties &

第二步:启动Kafka的Producer(cm02.spark.com为集群中一台服务器的主机名(映射了IP地址))

bin/kafka-console-producer.sh --broker-list cm02.spark.com:9092 --topic test

第三步:下面是一个简单的Spark Streaming Demo

import org.apache.spark.SparkConf

import org.apache.spark.streaming.kafka.KafkaUtils

import org.apache.spark.streaming.{Seconds, StreamingContext}

/**

* Demo

* Spark Streaming远程连接Zookeeper读取Kafka的数据进行单词统计

* Created by CaoWeiDong on 2017-11-22.

*/

object ScalaKafkaWordCount {

def main(args: Array[String]): Unit = {

//Zookeeper连接地址

val zkQuorum = "

[cm01.spark.com:2181,cm02.spark.com:2181,cm03.spark.com:2181"](http://cm01.spark.com:2181,cm02.spark.com:2181,cm03.spark.com:2181%22/)

//Kafka连接信息(Topic Partition)

val topicMap = Map("test" -> 1)

//conf

val conf = new SparkConf()

.setAppName(ScalaKafkaWordCount.getClass.getSimpleName)

.setMaster("local[4]")

//SparkStreaming

val ssc = new StreamingContext(conf, Seconds(2))

//SparkStreaming连接Kafka

val lines = KafkaUtils.createStream(ssc, zkQuorum, "sss", topicMap)

.map(_._2)

//以空格进行切分,统计单词个数

val words = lines.flatMap(_.split(" "))

val wordCounts = words.map(key => (key, 1L))

.reduceByKey(_ + _)

//打印

wordCounts.print()

//启动

ssc.start()

ssc.awaitTermination()

}

}

第四步:运行Demo

运行Spark-Streaming的Demo.png

第五步:准备数据

Hadoop Spark Kafka Flume

Hive HBase Flink Sqoop

Mapreduce yarn hdfs

Spark Storm Kylin Sqoop HBase Hadoop

Kafka Kylin hdfs Flume

将上面的数据贴到Kafka的Producer

为Kafka准备数据.png

第六步:IDEA下Spark Streaming的运行结果

Spark-Streaming统计Kafka生产的数据.png

最后一步:总结

其实这在Windows下IDEA下Spark Streaming通过local模式进行调试最关键的一行代码是:

val conf = new SparkConf()

.setAppName(ScalaKafkaWordCount.getClass.getSimpleName)

.setMaster("local[4]")

原来的时候我local的进程数是1,虽然运行时一直没有报错,但是Kafka生产的数据一直消费不了

后来调成4了以后就可以了,发现是因为Spark Streaming需要开启多个进程,一个进程接收数据,一个处理数据,一开始调成2不行,然后调成4就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值