实时导入和离线导入,导入的数据量和start_time字段值不同。

来源:8-16 ForeachSink到MySQL

酱汁怪兽

2022-05-12

方式描述:

  • 实时导入:

(1)采用的方式是本节课程,Hadoop环境+Flume+Kafka+Spark SSS+TiDB数据库。

  • 离线导入:

(1)"Hadoop系统入门+核心精讲"中,Hadoop环境。
(2)“Python3实战-PySpark+Azkaban 完成气象数据分析项目”中,Azkaban定时调度部分。
(3)通过Sqoop,导入TiDB数据库。

现象:

  • 实时导入:
    (0)查询某一个id号为oX1yb5A-G9L73W0cA5oiBiAWd8xg用户5月10号起的登录时间,共计44条数据。
    (1)在数据库的数据,是可以从原始日志查到的。
    (2)目前我也是没有查出来什么不对的地方。只是和离线导入数据库中的数据量不同。
    图片描述

  • 离线导入:
    (0)查询某一个id号为oX1yb5A-G9L73W0cA5oiBiAWd8xg用户5月10号起的登录时间,共计38条数据。
    (1)在数据库的数据,start_time该字段值和原始日志不一样了。
    图片描述

问题:

(1)为什么离线导入方式的导入结果,会改变时间?Azkaban的时区已经改至上海了。
(2)离线导入的数据量和实时导入的数据量count,怎么会不同?
(3)考虑过重复导入的可能性了,目前检测出来的,并没有重复导入。

写回答

1回答

Michael_PK

2022-05-15

1)不会改变时间,导入的时候肯定是数据原封不动的导入的,如果时间发生了变化,那肯定对后续的业务统计有影响。你这改变了时间,应该是中间哪个环境处理的不对了

2)离线导入和实时导入,如果是同一份数据源,那数据必然是一样的,同理,肯定是中间处理出了问题

3)重复导入,肯定是需要根据类似的主键id来做控制的,相同的数据肯定只有一条

0
0

Spark3实时处理-Streaming+StructuredStreaming实战

实战Spark3实时处理,掌握两套企业级处理方案

340 学习 · 238 问题

查看课程