Dinky中配置Flink集群 文件路径:hdfs://ddp54:8020/dinky-app-1.16-1.1.0-jar-with-dependencies.jar。配置文件路径:/opt/datasophon/flink-1.16.2/conf。启动成功后会给出:JobManager Web Interface。路径:hdfs://ddp54:8020/flink-dist。需要启动yarn-session 进程,在集群服务器。启动成功后可以在yarn的资源管理队列进行查看。
Flume采集Kafka数据到Hive Hive表准备:确保hive表为:分区分桶、orc存储、开启事务。去hive数据表进行数据查看,数据成功同步过来。切换到flume的bin目录下,运行配置文件。启动Kafka写入数据。监控flume页面情况。
Flink之SQL client使用案例 s(--slots):每个TaskManager的slot数量,默认一个slot一个core,默认每个taskmanager的slot的个数为1,有时可以多一些taskmanager,做冗余。# 在提交n次事务后,进行binlog的落盘,0为不进行强行的刷新操作,而是由文件系统控制刷新日志文件,如果是在线交易和账有>关的数据建议设置成1,如果是其他数据可以保持为0即可。所以该错误可以忽略。Per-Job Mode:单作业模式,我们也是更多的使用这种模式,这个模式会将我们的资源更合理的规划使用。
Kafka操作 --replication-factor 指定分区中的副本数量 默认一个。- --describe --topic itcast 查看某个主题详情信息。- --bootstrap-server 指定连接的kafka服务。- --bootstrap-server 指定连接的kafka服务。- --bootstrap-server 指定连接的kafka服务。---bootstrap-server 指定连接的kafka服务。- --topic 指定主题名称。- --list 查看所有主题。
Flink之重启策略 在设置完 CheckPoint() 检查点机制后,不设置重启策略的话,,可以无限重启程序,那么设置的检查点机制也就没有什么意义了。因此,在生产实践中,当设置完检查点之后,我们要与之设置好重启策略,一般有三种策略可选。
Flink之函数使用 在滚动窗口中使用 WindowFunction 函数来实现对数据的统计。在滑动窗口之使用 ReduceFunction 实现对数据的统计并输出。给程序开一个单独的端口:nc -lk 9999。给程序开一个单独的端口:nc -lk 9999。
SQL之行列转置以及非常规的行列转置 创建数据表# 插入数据values ('张三', '语文', 80),('张三', '数学', 90),('张三', '物理', 85),('李四', '语文', 85),('李四', '数学', 92),('李四', '物理', 82);
MySQL:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 这个问题是在新建用户设置密码的时候遇见的问题,翻译过来就是设置的密码不符合要求,需要设置一个符合要求的密码,但是也是可以自行更改的。3、validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;6、validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;4、validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;3、将数据库表的权限授予用户。
DataX实现数据同步(分区处理) 3、这里有一个坑,就是你在指明分区路径的时候,这时候分区是已经存在了的,不然DataX就会报错没有这个路径,可以自己先创建分区,由于是按照每日新增数据来进行分区管理的,因此这里可以手动创建分区。之前使用DataX来实现数据的同步,只是将数据送到了指定的位置,但是并没有分区处理,这样当数据多了的时候就不是可以很方便的管理数据了,因此,可以增设一个分区来对数据进行处理。2、接下来就是进行json文件的配置了,跟我上一篇的配置大同小异,但是在路径中稍有变动。这个时候在使用DataX的时候就不会再报错了。
DateX实现数据的流转 在MySQL中存在数据表和数据,现在需要将这部分数据导入到HDFS,使用DateX,在MySQL中以tbl_logs表为例,表中有数据37W+,根据需求,在Linux中创建文档,补充配置。由于现在公司弃用了Sqoop转而使用DateX来实现数据的端到端的传输,因此我对DateX进行了调研以及来解决数据从起点到端点的传输,以Mysql到HDFS为例。3、同名前缀:appen模式下。1、读流程reader。2、写流程writer。
DataX遇到的Python问题和错误解决 造成这样的原因是Python版本的差异造成的,2版本的python在输出时候可以不加 "()",但是3版本的python在输出的时候必须要加 "()",由于我是用的Anaconda,所以我直接在Aanconda的bin目录下直接更改了软连接的指向,注意:不是在Anaconde的虚拟环境中的bin目录更改的指向,而是在Anaconda的自身bin目录下更改的软连接指向。输出以上内容即DataX运行成功。
DS调度出现 SQL task prepareStatementAndBind error 错误 又在GitHub上问题查询得到可能是 "hive.server2.thrift.max.worker.threads" and "hive.metastore.client.socket.timeout"这两个的配置问题。hive.server2.thrift.max.worker.threads:在这里我将DS阈值设置到了1000,原来是500,因为可能跑的脚本多了,资源不释放什么的,调整完成之后保存重启。在对以上两个配置调整完成之后,完美的解决了DS跑脚本出错的问题。修改配置之后,都客户以执行成功。
SQL互粉问题 本以为自己已经会了很多的SQL类型题,但是前两天朋友面试时候问了一个互粉的SQL问题。第三题:(这个是最让我头疼的,就是因为这个我才知道有了 recursive 递归方法)select round((total - cnt)/2,0) as '互关'第三种方法我是用递归求解的,但是电脑性能跟不上,运行了5分钟还是运行不出来。# todo 法3(可能是递归写的有问题,一直卡在运行界面)求出2023年的截止到每一天的总的互粉用户数量。# 在这里边最重要的是使用递归求解连续日期。第一题:(总共想出来了三种方法)
WITH RECURSIVE 递归求解层次问题 all 上方),第二部分是递归部分(union all下方)。递归部分第一次进入的时候使用非递归部分传递过来的参数,也就是第一行的数据值,进而得到第二行数据值,然后根据第二行数据值得到第三行数据值。以下是一个示例的演示数据,包含了20条记录,分别代表不同的区域(省、市、区)。同时,我也提供了一个使用。的 SQL 查询,可以获取每个区域的 id、名字以及上级区域的 pid。总结:with recursive 由两部分组成。第一部分是非递归部分(现在,让我们来看一下如何使用。
Linux操作指令 pwd显示当前路径ls查看目录下的内容-a显示所有的隐藏的文件-h以人性化的形式展现-r递归展示当前目录下的所有子目录内容cd改变所在目录cat显示文件的内容grep在文件中查找某字符,通常跟管道符连用(将上一次的输出作为下一次的输入)例如:在Teacher.txt查找内容在指定文件中查找-n加行号cp:复制文件-i:互动:如果文件将覆盖目标中的文件,他会提示确认文件远程复制:scp -r 源文件 root@y1.xinxin:路径。
百度面SQL试题--求N日留存率 求次日、七日的用户留存率 给的数据中是没有重复数据的,但是当做这种题的时候我的第一反应就是要先去重,因为一个用户一天可能会登录多次,但是只能计数一次,因此我又自己给他加上了一条数据,这样可以将题目更加的完善。在做的时候我是分三步完成的:
K-Means算法 最近在进行机器学习的时候重新复习了一遍大学阶段学习过的一个算法,大名鼎鼎的K-Means算法,作为机器学习的一个入门级算法,在重新复习完之后,我又有了新的理解与感悟。在 R(regular)/F(frequence)/E(engage) 的模型上进行K-Means的使用,即基于以往用户的 频率、周期、参与程度进行预测,给该用户打上价值标签。在我最近做的一个用户互动参与画像的分析中,我便使用到了K-Means算法来对用户的价值进行分类, 来判断该用户的价值高低以便后续针对性的对其精力的投放。
SQL 开窗函数 sql中不仅仅有聚合函数,还有开窗函数。然而在使用聚合函数的时候必须要对数据进行group by分组,否则聚合函数无法执行,但是有时候当不希望对整体数据进行分组而又想达到一些分组才能够实现的效果时候,开窗函数就提供了这样的操作。在常用的开窗函数中,有RANK()、DENSE_RANK()、ROW_NUMBER()这三个,尤其是在对连续日期计算的时候效果最佳,但是这三者是有些许的区别的。
CombineByKey todo 分区内操作 # todo x相当于[value,1]==>('a',12)==>[12,1];y代表相同 key 的 value ==>('a',3)==> y=3。第三个函数是将不同分区内的所有相同的value的值添加到一块并计数。第一个函数是将所有的value转换成[value,1]的形式。# todo 分区间操作 # todo 计算分区间的值:将分区间的相同 key 的 value 都添加到一块。# todo 取出所有的(key,value)中的 value ,只取 value。