1.where,group by谁先执行
总结一下hive语句的执行顺序。
在hive的执行语句当中的执行查询的顺序:
这是一条sql:
select … from … where … group by … having … order by …
执行顺序:
from … where … select … group by … having … order by …
其实总结hive的执行顺序也是总结mapreduce的执行顺序:
MR程序的执行顺序:
map阶段:
1.执行from加载,进行表的查找与加载
2.执行where过滤,进行条件过滤与筛选
3.执行select查询:进行输出项的筛选
4.执行group by分组:描述了分组后需要计算的函数
5.map端文件合并:map端本地溢出写文件的合并操作,每个map最终形成一个临时文件。 然后按列映射到对应的reduceReduce阶段:
Reduce阶段:
1.group by:对map端发送过来的数据进行分组并进行计算。
2.select:最后过滤列用于输出结果
3.limit排序后进行结果输出到HDFS文件
2.数据库四大特性及数据库隔离级别
https://blog.csdn.net/sinat_35322593/article/details/81040479
https://blog.csdn.net/FG2006/article/details/6937413
3.有三个线程T1 T2 T3,如何保证他们按顺序执行
https://blog.csdn.net/qq_35571554/article/details/82834486
4.分布式锁
https://blog.csdn.net/wuzhiwei549/article/details/80692278
5.zookeeper崩溃恢复
就是zookeeper的非全新集群的master选举过程
https://blog.csdn.net/asd1456732891/article/details/100174473
6.ThreadLocal(应用场景是存放每个连接的session)
https://blog.csdn.net/qq_23315711/article/details/78642171
7.java三大特性:继承封装多态
https://blog.csdn.net/mumu1998/article/details/81187270
8.java多线程是如何实现的(一共四种方式)
https://blog.csdn.net/u011480603/article/details/75332435
9.redis主从复制和集群配置
https://blog.csdn.net/u011204847/article/details/51307044
10.redis的线程安全问题(单线程不涉及线程安全问题,集群多操作可能是分布式锁)
https://blog.csdn.net/lch_2016/article/details/81078243
https://blog.csdn.net/xlgen157387/article/details/79470556
11.分库分表操作
https://blog.csdn.net/weixin_38319645/article/details/81537849
12.TCP协议中的三次握手和四次挥手
https://blog.csdn.net/qq_38950316/article/details/81087809
13.Java中volatile关键字
http://www.sohu.com/a/216162666_132276
14.原子操作类AtomicInteger
https://www.cnblogs.com/rever/p/8215743.html
15.hive窗口函数
https://www.cnblogs.com/ZackSun/p/9713435.html
16.spring的ioc(控制反转)
ioc的原理是xml配置文件+反射+工厂。
就是原来由我们自己实例化的对象交给spring容器来初始化。这时对象初始化的权力就发生了反转。
17.spring的aop(面向切面编程:通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术)
aop可以对业务逻辑中的各个部分进行隔离,降低业务逻辑之间的耦合度,提高程序的可重用性。
作用:将日志记录,性能统计,安全控制,事务处理,异常处理从业务逻辑中分离出来。
切面=切点+通知
spring整合aspectj框架实现的aop(主要是使用aspectj提供的注解)。
aspectj支持六种通知,前置,后置,环绕,异常抛出,最终通知等。
aspectj使用步骤:声明切面,声明前置通知,在spring配置文件中开启aspectj注解自动代理功能。
18.java类加载过程
https://blog.csdn.net/ln152315/article/details/79223441
19.Mybatis中的 ${} 和 #{}区别与用法
https://blog.csdn.net/j04110414/article/details/78914787
20.Redis淘汰机制+热点数据问题
https://blog.csdn.net/CrankZ/article/details/84206366
21.redis的lru(Least recently used)算法原理
https://blog.csdn.net/hopeztm/article/details/79547052
22.分布式限流
高并发之API接口限流_zrg523的专栏-CSDN博客_接口限流
23.Redis去中心化
集群中所有的Master节点都可以进行读写数据,不分主次,记redis集群式去中心化的。每个Master节点与Slave节点间通过Goossip协议内部通信,异步复制。
但是异步赋值会导致某些特定情况下的数据丢失,即,redis集群不能保证数据的强一致性。
24.redis的一致性哈希算法
https://blog.csdn.net/cywosp/article/details/23397179
25.mysql索引最左匹配原则
https://blog.csdn.net/u013164931/article/details/82386555
26.mysql的底层存储方式b,b+tree
https://blog.csdn.net/gitchat/article/details/78787837
27.Java中BIO、NIO和AIO的区别和应用场景
https://blog.csdn.net/qq_24693837/article/details/70335491
28.Redis 序列化方式
https://blog.csdn.net/xiaolyuh123/article/details/78682200
29.Spark的wordcount
https://blog.csdn.net/dwb1015/article/details/52013362
https://blog.csdn.net/zxc123e/article/details/79925014
30.Spark的4种运行模式
https://blog.csdn.net/caiandyong/article/details/49231227
https://blog.csdn.net/do_what_you_can_do/article/details/53128480
val conf = new SparkConf().setAppName("WordCount").setMaster("local")
val conf = new SparkConf().setAppName("WordCount").setMaster("spark://master:7077") // 运行在集群中
31.hbase的lsm树
https://www.oschina.net/question/565065_113615
https://www.cnblogs.com/cxzdy/p/5118504.html
32.concurrenthashmap底层
https://blog.csdn.net/justloveyou_/article/details/72783008
33.hadoop某个数据块不能copy数据到其他节点
34.hbase的api有哪些filter
https://blog.csdn.net/u012185296/article/details/47338549
35.hbase如何删除数据
delete ‘<table name>’, ‘<row>’, ‘<column name >’, ‘<time stamp>’
36.数据库事务
https://blog.csdn.net/weixin_28760063/article/details/81369266
37.给定一个任务,如何分配java线程数
38.linux常用命令
https://blog.csdn.net/q357010621/article/details/80248611
39.java并发编程
见java并发包
40.用storm实现groupby
41.悲观锁乐观锁
https://blog.csdn.net/hongchangfirst/article/details/26004335
42.项目架构图
43.Linux下查看目录下的文件数
ls | wc -l
44.检查ssh进程是否存在
ps -ef | grep ssh
45.设置数据库存储引擎,建立索引
https://blog.csdn.net/weixin_43033426/article/details/88891198
https://blog.csdn.net/qq_37681350/article/details/80926373
46.storm编程案例
https://blog.csdn.net/NB_vol_1/article/details/46287077
storm 和jstorm中fieldsGrouping分配策略的实质是根据指定的字段的值,进行hash取模,根据模进行分配。这也说明了为什么相同的值会被同一个bolt处理。
47.所谓的grouping策略就是在Spout与Bolt、Bolt与Bolt之间传递Tuple的方式。总共有七种方式:
1)shuffleGrouping(随机分组)
2)fieldsGrouping(按照字段分组,在这里即是同一个单词只能发送给一个Bolt)
3)allGrouping(广播发送,即每一个Tuple,每一个Bolt都会收到)
4)globalGrouping(全局分组,将Tuple分配到task id值最低的task里面)
5)noneGrouping(随机分派)
6)directGrouping(直接分组,指定Tuple与Bolt的对应发送关系)
7)Local or shuffle Grouping
8)customGrouping (自定义的Grouping)