汇总:【实时数仓】介绍、需求分析、统计架构分析和ods层日志行为数据采集

优采云 发布时间: 2022-12-23 06:25

  汇总:【实时数仓】介绍、需求分析、统计架构分析和ods层日志行为数据采集

  文章目录

  电子商务实时数仓简介1 普通实时计算与实时

  普通的实时计算优先考虑时效性,所以通过实时计算直接从数据源采集得到结果。 这样做的时效性比较好,但缺点是计算过程中的中间结果还没有结算,所以在面对大量实时性需求时,计算复用性差(比如B想使用 A) 的结果,开发成本随需求线性上升。

  实时数据仓库是基于一定的数据仓库概念,对数据处理过程进行规划和分层,目的是提高数据的可重用性(例如e可以直接使用b的结果)。

  2 实时电子商务数据仓库的分层

  项目分为以下几层

  2 实时数仓需求分析 1 离线计算与实时计算的比较

  离线计算:所有输入数据在计算开始前都是已知的,输入数据不会改变。 一般计算量级较大,计算时间较长。 比如今天凌晨一点,从昨天积累的日志中计算出需要的结果。 最经典的是Hadoop的MapReduce方法;

  通常,报告是根据前(几天)天(T + 1(n))的数据生成的。 虽然统计指标和报表很多,但对时效性不敏感。 从技术操作的角度来看,这部分是批量操作。 即根据一定范围的数据一次性计算。

  实时计算:输入数据可以串行化的方式一个接一个地输入处理,也就是说不需要一开始就知道所有的输入数据。 与离线计算相比,运行时间短,计算量较小。 强调计算过程的时间要短,即调查后立即给出结果。

  主要针对当日(T+0)数据的实时监控。 通常,业务逻辑比线下需求更简单,统计指标也更少,但更注重数据的时效性和用户交互。 从技术操作的角度来看,这部分属于流处理的操作。 根据不断到达的数据进行实时计算。

  大数据主要有两种设计架构:

  Flink 的流批合一是使用 Flink-SQL 实现的。 处理两种数据的SQL是一样的,区别在于数据的日期。

  2 统计场景 (1) 日统计报表或分析图表需要收录当天的部分

  对于企业和网站的日常运营和管理,如果仅仅依靠离线计算,往往不能满足数据的时效性。 通过实时计算获取天、分、秒甚至亚秒级的数据,更便于企业快速响应和调整业务。

  因此,实时计算结果往往需要与离线数据进行合并或对比,并在BI或统计平台上展示。

  (2)实时数据大屏监控

  数据大屏是比BI工具或数据分析平台更直观的数据可视化方式。 尤其是一些大的促销活动,更是成为必备的营销手段。

  此外,还有一些特殊行业,如交通、电信等,大屏监控几乎是必备的监控手段。

  (3) 数据预警或提醒

  通过大数据实时计算得到的一些风控预警和营销信息提示,可以快速让风控或营销部门获得信息,以便采取各种应对措施。

  例如,如果用户在电商、金融平台上进行了一些非法或欺诈性的操作,大数据的实时计算可以快速筛选出情况并传送给风控部门进行处理,甚至可以自动拦截。 . 或者检测到用户的行为对某些产品有强烈的购买意愿,那么就可以将这些“商机”推送给客服部门,让客服主动跟进。

  (4) 实时推荐系统

  实时推荐是根据用户自身属性结合当前访问行为,通过实时推荐算法计算,将用户可能喜欢的商品、新闻、视频等推送给用户。

  这种系统一般由用户画像的批处理和用户行为分析的流处理组成。

  三 统计架构分析 1 离线架构

  MQ的作用:

  2 实时架构

  4 日志数据采集1 模拟使用日志*敏*感*词*

  这里提供了一个模拟生成数据的jar包,可以生成日志并发送到指定端口。 大数据程序员需要了解如何从指定端口接收数据并处理数据。

  上传文件application.yml、gmall2022-mock-log-2022-11-28.jar。

根据实际需要修改application.yml。

使用模拟日志*敏*感*词*的jar 运行

java -jar gmall2022-mock-log-2022-11-28.jar

目前还没有地址接收日志,所以程序运行后的结果有如下错误

  注意:ZooKeeper从3.5开始,AdminServer的端口也是8080,如果在本机启动zk,可能会看到405错误,意思是找到了请求地址,但是接收方式不对。

  2 本地测试(一)SSM和SpringBoot

  Spring:帮助程序员创建对象和管理对象之间的关系。

  SpringMVC:接收客户端的请求并响应。

  mybatis:ORM(ObjectRelationMapption),将关系数据库中的表映射到java中的类。

  SpringBoot集成了SSM,协议大于配置。

  (2) 创建SpringBoot a 创建一个空的父项目gmall2022-parent 来管理后续所有模块module

  为了把各个模块放在一起,但是模块还是相互独立的,所以创建一个Empty

  项目足够; 如果父模块管理子模块,需要将父模块的pom.xml文件设置为pom.xml。

  b 新建一个SpringBoot模块作为采集日志服务器

  在父项目下添加一个Module,选择Spring Initializr。

  注意:有时候SpringBoot官方脚手架不稳定,可以切换Custom,选择国内地址。

  c配置项目名称和JDK版本

  d 选择版本,通过勾选自动添加lombok、SpringWeb、Kafka相关依赖

  (3) 演示测试

  创建FirstController输出SpringBoot处理流程。

  几个注释说明:

  /**

* 回顾SpringMVC Controller

<p>

*/

//@Controller

@RestController

public class FirstController {

@RequestMapping("/first")

//@ResponseBody

public String first(@RequestParam("hahaa") String username,

@RequestParam("heihei") String password){

System.out.println(username + "---" + password);

return "success";

}

}

</p>

  (4) 模拟采集埋点数据并进行处理

  采集过程如下。 在服务器上执行jar包,启动本机执行程序,存盘到windows,最后由Kafka消费数据。

  a 在resources中添加logback.xml配置文件

  

%msg%n

${LOG_HOME}/app.log

${LOG_HOME}/app.%d{yyyy-MM-dd}.log

%msg%n

  logback配置文件说明

  记录器:描述如何选择附加程序的控制器。

  注意:如果单独为一个类指定,不要忘记修改类的全限定名。

  日志级别从低到高:TRACE、[DEBUG、INFO、WARN、ERROR]、FATAL。

  配置完成后,程序运行时读取的是目标文件下的类,而不是resources下的logback.xml。

  要使用它,需要在类中添加Slf4j注解。

  b 修改SpringBoot核心配置文件application.propeties

  #============== kafka ===================

# 指定kafka 代理地址,可以多个

spring.kafka.bootstrap-servers=hadoop101:9092,hadoop102:9092,hadoop103:9092

# 指定消息key和消息体的编解码方式

spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer

spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer

  c 在LoggerController中添加一个方法,用于打印、放置和发送日志到Kafka主题

  @RestController

@Slf4j

public class LoggerController {

<p>

// 不使用Slf4j注解需要自己定义接收日志的对象

// private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LoggerController.class);

@Autowired

private KafkaTemplate kafkaTemplate;

@RequestMapping("/applog")

public String log(@RequestParam("param") String logStr){

// 1 打印输出到控制台

// System.out.println(logStr);

// 2 落盘,使用logback完成

log.info(logStr);

// 3 发送到kafka主题

kafkaTemplate.send("ods_base_log",logStr);

return "success";

}

}

</p>

  写在卡夫卡:

  Properties props = new Properties();

props.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"hadoop101:9092");

props.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,"");

props.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,"");

KafkaProducer kafkaProducer = new KafkaProducer(props);

kafkaProducer.send(

/**

* 生产者的分区策略:

* 1 通过分区号指定固定分区

* 2 指定key,根据key获取哈希值,对分区数做模运算,决定将数据发送到那一个分区内

* 3 粘性分区,不停的向一个分区发送数据,满足以下条件之一,会改变分区

* 1)大于batchsize(默认16K)

* 2)大于一定时间

*/

new ProducerRecord("ods_base_log",logStr)

);

  但是,SpringBoot是一个全家桶,为一些常用的组件提供了一些类。

  d kafka常用命令

  服务器上将kafka的默认分区数修改为4个。

  vim /opt/module/kafka_2.11-2.4.1/config/server.properties

num.partitions=4

  # 启动zookeeper

zk.sh start

# 启动kafka

kfk.sh start

# 查看所有主题

bin/kafka-topics.sh --bootstrap-server hadoop101:9092 --list

# 创建主题

bin/kafka-topics.sh --bootstrap-server hadoop101:9092 --create --topic first --partitions 4 --replication-factor 2

# 查看主题详情信息

bin/kafka-topics.sh --bootstrap-server hadoop101:9092 --describe --topic first

# 删除主题

bin/kafka-topics.sh --bootstrap-server hadoop101:9092 --delete --topic first

# 101生产消息

bin/kafka-console-producer.sh --broker-list hadoop101:9092 --topic frist

# 101消费消息

bin/kafka-console-consumer.sh --bootstrap-server hadoop101:9092 --topic first

  e 修改hadoop101上rt_applog目录下的application.yml配置文件

  修改地址和日期,地址为本机地址。

  检验

  启动kafka消费者进行测试。

  bin/kafka-console-consumer.sh --bootstrap-server hadoop101:9092 --topic ods_base_log

  在 Windows 上运行 Idea 程序 LoggerApplication。

  运行rt_applog下的jar包。

  解决方案:关键词采集工具有哪些(三种常用查找关键词APP软件)

  无论是在Google上获客,在社交媒体上找客户,还是在B2B平台上找买家,最重要的是选择合适的“关键词”。

  关键词是我们在运营中必须更加关注的,也是我们必须挖掘和深化的方向。 能否为产品找到合适的关键词,也会直接影响到产品的销量。

  那么如何从买家的角度选择合适的关键词呢?

  为大家推荐三种常用的关键词搜索APP软件

  01

  谷歌关键词规划师

  谷歌关键字规划师

  使用这个关键词工具,我们可以统计分析关键词的流量情况,了解关键词的SEO难度,得到更多相关的关键词提示。

  Google 关键词 Planner可以帮助我们详细了解不同关键词在Google Search上的用户查询情况,从而为网站制定合适的关键词策略,让网站尽快获得搜索流量。

  首先,您需要开设一个 Google Ads 帐户:

  打开Goog​​le Ads账户后,进入其主界面,选择上方工具栏中的工具与设置&gt;&gt;规划&gt;&gt;关键字规划师:

  打开这个工具后,可以看到Google 关键词 Planner提供了以下两个功能:

  

  01

  发现新关键词

  顾名思义,这个工具的作用就是帮助我们发现更多新的关键词。 打开后界面如下:

  在这个关键词工具中,有两个渠道可以发现新关键词:“先输入关键字”和“先指定网站URL”。

  ①先输入关键词:输入关键词就是输入你自己的产品或服务的关键词,谷歌会根据你输入的关键词搜索其他相关的关键词。

  这里可以输入多个关键词,用逗号关键词。 例如,如果产品是包包,您可以输入男士包包和女士包包,以便找到更多相关的关键词。

  输入关键词后,还需要进行其他设置。 关键词信息只是搜索条件之一,必须选择正确的搜索语言和地区。 如果您搜索的是英文关键词,您需要选择英文作为语言和外国,例如美国,这样您可以获得更准确的数据。

  ②首先指定网站网址:输入域名或页面查找关键词。 输入网站网址,谷歌会把这个网站作为关键词来源,然后搜索更多相关的关键词。 同样,您需要选择相应的语言和地区作为搜索条件。

  02

  获取搜索量和预测数据

  查看关键字的搜索量和其他历史指标,以及对关键字未来表现的预测。

  与之前发现新关键词的工具相比,这个获取搜索量数据的关键词工具用处不大。 对发现新关键词帮助不大。 如果你已经有一个很大的关键词列表,你可以使用这个工具来查询他们的搜索量和一些相关数据,但是这些数据也可以通过之前的关键词发现工具来查看。

  该工具与关键词发现工具的区别主要在于广告推广方面。 通过其预测数据,广告主可以知道关键词广告在不同预算下可以获得的点击次数。

  

  最后,就是选择合适的关键词。 一般来说,选择关键词要考虑三个因素:搜索流量、商业价值、SEO竞争。

  02

  谷歌趋势

  谷歌趋势

  如果你想知道某个相关关键词的流量数据,那么Google Trends这个工具对我们来说就大有帮助了。

  能够按类别查看关键词趋势,使用 Google Trends 为内容计时,并显示趋势向上的关键词。

  它可以反映某个关键词在不同时期在谷歌搜索引擎中的显示频率和相关数据统计,可以比较两个或多个搜索词的相对流行度。

  03

  回答公众

  本工具整合了谷歌关键词,形成自己的数据库,尤其是长尾关键词,因此特别适合消费者需求研究、搜索引擎优化、竞争研究等。

  AnswerThePublic可以帮助我们获取产品相关问题提示、产品相关介词提示等多维度的广告创意建议,也可以实时了解这些推荐创意的搜索热度。

  当在 AnswerThePublic 中输入关键词时,它将显示有关问题、介词和字母表的信息。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线