尚硅谷大数据项目之Flink实时数仓-踩坑记录和笔记记录

本文记录了在基于Flink构建大数据实时数仓过程中遇到的各种问题,包括Slf4j配置问题、用户新老判断、Hbase启动、Redis缓存策略、Flink反压优化等,涉及数据处理、数据库操作、状态管理等多个方面,并提供了详细的解决办法和优化思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写自定义目录标题

bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic dwd_order_refund_info
bin/kafka-console-producer.sh --broker-list hadoop102:9092 --topic

Linux非root用户是没有权限访问1024以下的端口的。
nginx的默认端口号是80
http的默认端口号是80,http://hadoop102:80可以不写80

用process可以把数据保留下来, 把脏数据 输出到测输出流中,用到测输出流只能用到process

动态分流来解决增加表的问题,通过外部文件来感知通知到程序,然后根据外部文件的配置变化来增加

跳出率和留存率都可以反映出用户粘性

CEP可以使用事件时间,而且如果加了within就可以处理乱序数据,

env.setParallelism(1); // 生产环境,与Kafka分区数保持一致

1. 关于Slf4j注解配置文件logback.xml不生效问题

logback.xml的命名多打了一个空格,真的栓q

2. 判断新老用户的时候,什么时候会出问题:

卸载重装app的时候可能会将老用户标记为新用户。is_new为1时,老用户需要将1改为0,需要用到flink的状态编程(值状态)和相关知识点

3. 为什么维度数据选择存储在Hbase中,而不是Redis,Mysql中

因为维度数据中有个是用户维度信息,数据量非常的大,Hbase能够存储海量数据并且能够做到毫秒级查询
为什么不放在Mysql中,并发压力大,会加大业务数据库的压力。

4. 启动phoenix卡住不动了

[wanghaha@hadoop102 module]$ /opt/module/phoenix/bin/sqlline.py hadoop102,hadoop103,hadoop104:2181
Setting property: [incremental, false]
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect -p driver org.apache.phoenix.jdbc.PhoenixDriver -p user "none" -p password "none" "jdbc:phoenix:hadoop102,hadoop103,hadoop104:2181"
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/module/phoenix/phoenix-client-hbase-2.4-5.1.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/module/hadoop-3.1.3/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
Connecting to jdbc:phoenix:hadoop102,hadoop103,hadoop104:2181
22/07/13 17:02:18 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

原因:是hbase的meta信息不一致
将zk中hbase删除,然后重新启动hbase搞定

成功解决
在这里插入图片描述

6. java找不到符号

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
解决方法:我们用到了lombok的Data注解,而我们误引入了多个lombok依赖,删除版本低的,成功解决

7. 为什么实时数仓中没有DWT层?

DWT 数据主题层, 是历史数据的累计结果,实时数仓中不需要。

8. 为什么实时数仓中有dwm层?

9. 如何给普通的泛型对象赋值?

使用工具类,来实现。

 <!--commons-beanutils 是 Apache 开源组织提供的用于操作 JAVA BEAN 的工具包。
使用 commons-beanutils,我们可以很方便的对 bean 对象的属性进行操作-->
        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.9.3</version>
        </dependency>
        <!--Guava 工程包含了若干被 Google 的 Java 项目广泛依赖的核心库,方便开发-->
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>29.0-jre</version>
        </dependency>
// 给泛型对象赋值
            for (int i = 1; i < columnCount+1; i++) {
   
   
                // 获取列名
                String columnName = metaData.getColumnName(i);
                // 判断是否需要转换为 驼峰命名
                if(underScoreToCamel){
   
   
                    columnName = CaseFormat.LOWER_UNDERSCORE
                            .to(CaseFormat.LOWER_CAMEL,columnName.toLowerCase(Locale.ROOT));
                }
                // 获取
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值