笔记~~~~

一、docker服务
    1.docker服务查询:
        systemctl status docker.service,显示active(running)
        启动docker服务systemctl start docker.service
    2.docker虚拟机创建:
        docker-create xxx.conf
    3.docker虚拟机启动:
        cd /etc/docker/vsysconf
        docker-start xxx.conf
    4.docker虚拟机查看:
        cd /etc/docker/vsysconf
        docker ps
    5.停止docker虚拟机:
        docker xxx虚拟机名字NAMES
    6.删除docker虚拟机:
        docker rm 虚拟机编码CONTAINER ID
二、kafka
    1.创建topic
        bin/kafka-topics.sh --create --topic 主题名 --zookeeper IP地址:2181 --config max.message.bytes=12800000 --config flush.messages=1 --partitions 5 --replication-factor 1
    2.查看topic
        bin/kafka-topics.sh --list --zookeeper IP地址:2181
    3.消费数据
        ./kafka-console-consumer.sh --bootstrap-server IP地址1:9092,IP地址2:9092,IP地址3:9092 --topic 主题名
三、dmp文件的导入导出
    数据导出:
    1.将数据库TEST完全导出,用户名system 密码manager, 实例名TEST  导出到D:\daochu.dmp中
        exp system/manager@TEST file=d:\daochu.dmp full=y
    2.将数据库中system用户与sys用户的表导出
        exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
    3.将数据库中的表table1 、table2导出
        exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2) 
    4.将数据库中的表table1中的字段filed1以"00"打头的数据导出
        exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"
    数据导入:
    1.将D:\daochu.dmp 中的数据导入 TEST数据库中。
        imp system/manager@TEST  file=d:\daochu.dmp
        上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
        在后面加上 ignore=y 就可以了。
    2.将d:\daochu.dmp中的表table1 导入
        imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1) 
四、端口
    mysql:3306
    redis:6379
    storm:8080
    flink:8081
五、切换用户
    1.linux切换到其他用户
        su - hadoop
    2.linux创建该用户
        (1)创建huser用户
        sudo useradd -m huser
        (2)设置用户huser的登录密码
        sudo passwd huser
        (3)给用户huser增加管理员权限
        sudo adduser huser sudo
六、kafka在CDK中的地址    
    /opt/cloudera/parcels/CDH-6.3.2...../lib/kafka
七、yarn常用命令
    yarn application
    1、-list          列出所有 application 信息
    示例:yarn  application -list
    2、-appStates <States>          跟 -list 一起使用,用来筛选不同状态的 application,多个用","分隔; 所有状态:ALL,NEW,NEW_SAVING,SUBMITTED,ACCEPTED,RUNNING,FINISHED,FAILED,KILLED
     示例:yarn  application -list -appStates RUNNING

    3、-appTypes <Types>            跟 -list 一起使用,用来筛选不同类型的 application,多个用","分隔;如 MAPREDUCE
     示例:yarn  application -list -appTypes MAPREDUCE

    4、-kill <Application ID>          杀死一个 application,需要指定一个 Application ID

    示例:yarn  application -kill application_1479736113445_2577

    5、-status <Application ID>        列出 某个application 的状态

    示例:yarn  application -status application_1479736113445_2577

    6、-movetoqueue <Application ID>   移动 application 到其他的 queue,不能单独使用
    7、-queue <Queue Name>                 与 movetoqueue 命令一起使用,指定移动到哪个 queue
      示例:yarn  application -movetoqueue application_1479736113445_2577 -queue other
      
八、maven外网
    http://insecure.repo1.maven.org/maven2/

九、clickhouse官网
    https://clickhouse.com/docs/zh/
    
十、SQL
    1、修改数据库
        修改表名: ALTER TABLE 旧表名 RENAME AS 新表名
        添加字段: ALTER TABLE 表名 ADD 字段名 列属性[属性]
        修改字段: ALTER TABLE 表名 MODIFY 字段名 列类型[属性]
                   ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列属性[属性]
        删除字段: ALTER TABLE 表名 DROP 字段名
        删除数据表: DROP TABLE [IF EXISTS] 表名
    2、DML语句
        插入数据: INSERT INTO 表名[(字段1,字段2,字段3,...)] VALUES('值1',‘值2’,‘值3’)
        修改数据: UPDATE 表名 SET column_name=value [,column_name2=value2,...] [WHERE condition];
        删除数据: DELETE FROM 表名 [WHERE condition]
                   TRUNCATE [TABLE] table_name;用于清空表数据,但表结构、索引、约束等不变
    3、DQL语句 []括号是选填,{}括号是必填的
        SELECT [ALL | DISTINCT]
        {* | table.* | [table.field1[as alias1][,table.field2[as alias2]][,...]]}
        FROM table_name [as table_alias]
            [left | right | inner join table_name2] -- 联合查询
            [WHERE ...] -- 指定结果需满足的条件
            [GROUP BY ...] -- 指定结果按照哪几个字段来分组
            [HAVING] -- 过滤分组的记录必须满足的次要条件
            [ORDER BY ...] -- 指定查询记录按一个或多个条件排序
            [LIMIT {[offset,]row_count | row_countOFFSET offset}];
            -- 指定查询的记录从哪条至哪条
                   
        -- like结合使用的通配符 : % (代表0到任意个字符) _ (一个字符)

        连接查询
            INNER JOIN  如果表中有至少一个匹配,则返回行
            LEFT JOIN   即使右表中没有匹配,也从左表中返回所有的行
            RIGHT JOIN  即使左表中没有匹配,也从右表中返回所有的行
    4、常用函数
        数据函数:
            SELECT ABS(-8); /*绝对值*/
            SELECT CEILING(9.4); /*向上取整*/
            SELECT FLOOR(9.4); /*向下取整*/
            SELECT RAND(); /*随机数,返回一个0-1之间的随机数*/
            SELECT SIGN(0); /*符号函数: 负数返回-1,正数返回1,0返回0*/
        字符串函数:
            SELECT CHAR_LENGTH('狂神说坚持就能成功'); /*返回字符串包含的字符数*/
            SELECT CONCAT('我','爱','程序'); /*合并字符串,参数可以有多个*/
            SELECT INSERT('我爱编程helloworld',1,2,'超级热爱'); /*替换字符串,从某个位置开始替换某个长度*/
            SELECT LOWER('KuangShen'); /*小写*/
            SELECT UPPER('KuangShen'); /*大写*/
            SELECT LEFT('hello,world',5); /*从左边截取*/
            SELECT RIGHT('hello,world',5); /*从右边截取*/
            SELECT REPLACE('狂神说坚持就能成功','坚持','努力'); /*替换字符串*/
            SELECT SUBSTR('狂神说坚持就能成功',4,6); /*截取字符串,开始和长度*/
            SELECT REVERSE('狂神说坚持就能成功'); /*反转
        日期函数:
            SELECT CURRENT_DATE(); /*获取当前日期*/
            SELECT CURDATE(); /*获取当前日期*/
            SELECT NOW(); /*获取当前日期和时间*/
            SELECT LOCALTIME(); /*获取当前日期和时间*/
            SELECT SYSDATE(); /*获取当前日期和时间*/
            -- 获取年月日,时分秒
            SELECT YEAR(NOW());
            SELECT MONTH(NOW());
            SELECT DAY(NOW());
            SELECT HOUR(NOW());
            SELECT MINUTE(NOW());
            SELECT SECOND(NOW());
        
        -- 从含义上讲,count(1) 与 count(*) 都表示对全部数据行的查询。
        -- count(字段) 会统计该字段在表中出现的次数,忽略字段为null 的情况。即不统计字段为null
        的记录。
        -- count(*) 包括了所有的列,相当于行数,在统计结果的时候,包含字段为null 的记录;
        -- count(1) 用1代表代码行,在统计结果的时候,包含字段为null 的记录 。
        /*
        很多人认为count(1)执行的效率会比count(*)高,原因是count(*)会存在全表扫描,而count(1)
        可以针对一个字段进行查询。其实不然,count(1)和count(*)都会对全表进行扫描,统计所有记录的
        条数,包括那些为null的记录,因此,它们的效率可以说是相差无几。而count(字段)则与前两者不
        同,它会统计该字段不为null的记录条数。
        下面它们之间的一些对比:
        1)在表没有主键时,count(1)比count(*)快
        2)有主键时,主键作为计算条件,count(主键)效率最高;
        3)若表格只有一个字段,则count(*)效率较高。
        */
    5、事务
        原子性(Atomic)
            整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(ROLLBACK)到事务开始前的状态,就像这个事务从来没有执行过一样。
        一致性(Consist)
            一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。也就是说:如果事务是并发多个,系统也必须如同串行事务一样操作。
            其主要特征是保护性和不变性(Preserving an Invariant),以转账案例为例,假设有五个账户,每个账户余额是100元,那么五个账户总额是500元,如果在这个5个账户之间同时发生多个转账,无论并发多少个,
            比如在A与B账户之间转账5元,在C与D账户之间转账10元,在B与E之间转账15元,五个账户总额也应该还是500元,这就是保护性和不变性。
        隔离性(Isolated)
            隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。
            这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。
        持久性(Durable)
            在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

十一、Flink join实现机制
    Flink双流join主要分为两大类:一类是基于原生state的connect算子操作,另一类是基于窗口的JOIN操作。其中基于窗口的JOIN可细分为window join和interval join两种。
    原生state实现原理:底层原理依赖Flink的state状态存储,通过将数据存储到State中进行关联join,最终输出结果。
    基于window的join原理:此类方式利用Flink的窗口机制实现双流join。通俗理解,将两条实时流中元素分配到同一个时间窗口中完成join。两条实时流数据缓存再window State中,当窗口触发计算时,执行join操作。
    滚动窗口join、滑动窗口join、会话窗口join

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值