58 面试
来源:互联网 发布:新西兰留学利弊端 知乎 编辑:程序博客网 时间:2024/04/30 09:20
58 面试到时没有什么
被Spark的demo 给搞晕了。
附录Spark 在线和实时的统计。
架构图:
1.yum 安装一个 nc
启动端口9999
2.编写 SparkStreaming 程序
object NetworkworkCount{ def main( args: Array[String]){ //设置日志级别 LoggerLevel.setStreamingLogLevels() //创建sparkConf 并配置 本地模式 var conf =new SparkConf().setMaster("local[2]").setAppNamesetAppName("NetworkWordCount"); //设置DStream 批次的时间间隔为2s var ssc=new StreamingContext(conf,Seconds(2)); //通过网络读取数据库 var lines=ssc.socketTextStream("192.168.10.101",9999); //讲读到的数据用空格切成单词 var words=lines.flatMap( _.split("") ); //将单词进行分组求相同的单词出现的次数 var wordCounts=pairs.reduceByKey(_+_) //打印结果的输出到控制台 wordCounts.print() ssc.start(); ssc.awaitTermination(); }
}//启动Spark Steaming 程序:由于使用的是本地i的模式
注意: 要制定并行度,如在本地运行设置setMaster(""),相当于启动了2个线程
一个给recevier,一个给computer.如果是在集群中,必须要求可用的core数目大于1.
4.启动Sparking Streaming 程序
在linux 端命令行输入单词
nc -lk 9999
5.在IEDA控制台中查看结果
每次在Linux短输入的单词次数被正确的统计出来,但是结果不能累加。
如果需要累加需要使用updateStateBykey(func) 来更新状态。
代码如下:
var updateFunc=(iter:Iterator[(String,Seq[Int]),Option[int]])=>{
//iter.flatMap{case(x,y,z) => Some(y.sum+z.getOrElse(0)).map(m=>(x,m)) }
//主函数变化如下
def main (args: Array[String]){
LoggerLevel.setStreamingLogLevels()
var conf =new SparkConf().setMaster("").setAppName("")
var ssc=new StreamingContext(conf,Seconds(5));
//做checkpoint("c://aaa")
var lines=ssc.socketTextStream("","")
//reduceByKey 结果不累加
//var resut=lines.flatMap(_.split("").map((_,1))).reduceByKey(+)
//updateStateBykey 结果可以累加但是需要传入一个自定义的累加函数:updateFunc
var results=lines.flatMap(_.split("").map (_1)) .updateStateBykey(updateFunc,new HashPartitioner(ssc.sparkContext.defaultParallelism)
,true);
result.print()
ssc.start();
ssc.awaitTerminnation();
}
demo02:
spark Streaming 整合kafka 完成网站点击流实时统计
1.安装并配置zk
2,安装病配置kafka
6.编写spark Streaming 应用程序
obejct UrlCount{
var updateFunc=(iterator:Iterator[( String,Seq[int],Optiones[Int]) ] )=){
iterator.flatMap{ case(x,y,z) => Some(y.sum+ z.getOrElse(0)). map(n=>(x,n))}
}
def main(args:array[String]){
//接收命令行的中的参数
var Array(zkQuorum,groupId,topics,numThreads,hdfs)=args
//创建sparkConf 并配置AppName
var conf =new SparkConf().setAppname("urlCount");
//创建StreamingContext
var ssc=new StreamingContext(conf,Sends(2));
//设置检查点
ssc.checkPoint(hdfs);
//设置topic 信息
var lines=KafkaUtils.createStream(ssc,zkQuorm,groupdID,topicMap,StoreLevevl.Memory_AND_DISK);
//切分数据,截取用户点击的url
var urls=lines.map(x=>(x.split("")(6),1))
//切分数据,截取用户点击的url
var urls=lines.map(x=>(x.split("")(6),1));
//统计url 点击量
var result=urls.updateStateByKey(updateFunc,new HashPartitioner(ssc.sparkContext,defalutParallslims),true);
result.print()
ssc.start()
ssc.awaitTermnation();
}
- 58 面试
- 58面试整理
- 面试!
- 面试
- 面试
- 面试
- 面试
- 面试
- 面试
- 面试
- 面试
- 面试
- 面试
- 面试...
- 面试
- 面试
- 面试
- 面试
- BZOJ 1512 [POI2006]Pro-Professor Szu Tarjan强连通分量 DP
- ConvertBeanUtil
- 海量数据处理
- 计算机程序的思维逻辑 (67)
- 栈的应用--九度1019.简单计算器【神】
- 58 面试
- 十六进制颜色表
- 链表
- STM32笔记风速仪
- LeetCode 82. Remove Duplicates from Sorted List II
- odoo通过iframe插入html页面
- C++字符串长度获取方法
- geotools中的空间关系(Geometry Relationships)和空间操作(Geometry Operations)
- 转:视觉传达专业需要学习什么内容