大数据(0d)埋点日志分析

日志埋点功能 开发中经常会有日志埋点需求, 用于统计接口的请求量、处理速度等等,为此本篇幅从一下几个维度进行分析,从零到有搭建。利用原生的logback,配置好xml即可实现日志保存,不需要考虑批量刷盘等问题,而封装好通用的SDK是为了方便后续系统使用 。 共享文件夹是为了后续不同微服务部署在不同机器上时,设置的绝对路径文件地址能被后续定时任务解析到文件。解析日志就是文件记录+文件解析的过程,可以建立两张表。一张记录有哪些文件,这些文件是否被解析过,状态如何,另一张表即日志文件表,保存每一次埋点的数据。解析过程会严格安装 阅读详情

架构

  • 埋点(event tracking):用于网站分析的数据采集方法
  • Nginx(engine x):高性能的HTTP和反向代理web服务器

埋点数据设计

数据类别记录内容内容示例示例指标字段
页面页面ID、上页ID
页面类型
商品A页、文章B页
首页、搜索页、商品页
pv、uv、页面跳转路径、页面跳转率page
事件操作类型
操作对象
输入、滑动、点击
搜索栏、商品列表、商品
actions
曝光曝光对象
曝光位置
商品、直播
页眉、页脚
商品曝光量、直播点击率displays
启动启动方式点击APP图标、外源跳入启动方式统计start
错误错误信息error
…
{
	"timestamp": 1585744376001,
	"start": true,
	"basic_information": {
		"mobile_id": "手机ID",
		"os": "操作系统",
		"version": "APP版本号",
		"uid": "账户ID",
		"first_use": "是否首次使用"
	},
	"page": {
		"page_id": "页面ID",
		"last_page_id": "上个页面ID",
		"page_type": "商品页"
	},
	"actions": [{
		"action_id": "动作id",
		"item_id": "目标ID",
		"timestamp": 1585744376605
	}],
	"displays": [{
		"item_id": "曝光对象ID",
		"position": "曝光位置"
	}],
	"error": {
		"code": "错误码",
		"info": "错误信息"
	},
}
常见结构示例内容
设备基础信息设备ID
手机型号
操作系统
操作系统版本
屏幕高度和宽度…
埋点基础信息埋点类型:PC浏览器、手机APP、小程序
软件版本
…
环境基础信息时间戳
IP地址
网络类型
地区
是否首次触发事件
用户标识
…

技术

分析指标

指标类别示例
离线指标DAU、MAU、WAU、每日/周/月 pv、页面跳转率…
实时指标每小时/分钟的 pv/uv …

离线计算demo

Python造数据写到Kafka

from time import sleep, localtime, time, strftime
from numpy.random import choice, randn
from kafka import KafkaProducer
from json import dumps

HOUR_SLEEP_PROBABILITY = {
    1: 21600, 2: 18000, 3: 14400, 4: 10800, 5: 9600, 6: 7200,
    7: 3600, 8: 3600, 9: 1800, 10: 1800, 11: 900, 12: 120,
    13: 7200, 14: 7200, 15: 7200, 16: 7200, 17: 4800, 18: 2400,
    19: 900, 20: 180, 21: 30, 22: 60, 23: 480, 0: 2400,
}
# 页面,单页最大概率=2/(n+1)
PAGES = [f'p{s}' for s in ''.join(str(i) * i for i in range(1, 9))]
# Kafka
BOOTSTRAP_SERVERS = ['localhost:9092']
TOPIC = 'EC'
KEY = b'PV'

def hour_sleep():
    """根据目前时间进行程序休眠"""
    hour = localtime().tm_hour
    sleep(HOUR_SLEEP_PROBABILITY[hour])

def get_user(frequency=100):
    return 'u%d' % int(abs(randn() * frequency))

def generate():
    while True:
        yield {
            'user_id': get_user(),
            'page_id': choice(PAGES),
            'timestamp': int(time() * 1000),
            'hms': strftime('%Y-%m-%d %H:%M:%S'),
        }
        hour_sleep()

def produce():
    # 创建生产者
    producer = KafkaProducer(
        bootstrap_servers=BOOTSTRAP_SERVERS,
        value_serializer=lambda x: dumps(x).encode())
    # 生产数据
    for dt in generate():
        producer.send(
            topic=TOPIC,
            value=dt,
            key=KEY,
            headers=[('timestamp', str(dt['timestamp']).encode())],
            partition=0)

if __name__ == '__main__':
    produce()

检验数据写到Kafka情况

kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic EC \
--from-beginning

HDFS创建文件夹

# Kafka --Flume--> HDFS
hadoop fs -mkdir /user/hive/warehouse/kafka
# 库
hadoop fs -mkdir /user/hive/warehouse/ec.db
hadoop fs -mkdir /user/hive/warehouse/ec.db/ods
hadoop fs -mkdir /user/hive/warehouse/ec.db/dwd
hadoop fs -mkdir /user/hive/warehouse/ec.db/dim
hadoop fs -mkdir /user/hive/warehouse/ec.db/dws
hadoop fs -mkdir /user/hive/warehouse/ec.db/ads

Kafka数据传输到HDFS

vim kafka2hdfs.conf
# 定义agent、channel、source、sink名称,并关联
a2.sources = r2
a2.channels = c2
a2.sinks = k2
a2.sources.r2.channels = c2
a2.sinks.k2.channel = c2

# source
a2.sources.r2.type = org.apache.flume.source.kafka.KafkaSource
# kafka服务地址
a2.sources.r2.kafka.bootstrap.servers = hadoop105:9092
# 主题
a2.sources.r2.kafka.topics = EC
# 消费者组
a2.sources.r2.kafka.consumer.group.id = g3
# 消费者组第一个消费topic的数据的时候从哪里开始消费
a2.sources.r2.kafka.consumer.auto.offset.reset = earliest
# source从Kafka拉消息的批次大小
a2.sources.r2.batchSize = 50

# channel
a2.channels = c2
# channel类型:内存(断电可能会丢失数据)
a2.channels.c2.type = memory

# sink
a2.sinks.k2.type = hdfs
# 指定数据存储目录
a2.sinks.k2.hdfs.path = /user/hive/warehouse/kafka/%Y-%m-%d
# 指定滚动生成文件的时间间隔
a2.sinks.k2.hdfs.rollInterval = 3600
# 指定滚动生成文件的大小(133169152=127*1024*1024<128M)
a2.sinks.k2.hdfs.rollSize = 133169152
# 写入多少个event之后滚动生成新文件,通常选0,表示禁用
a2.sinks.k2.hdfs.rollCount = 0
# 文件写入格式:SequenceFile-序列化文件、DataStream-文本文件、CompressedStream-压缩文件
a2.sinks.k2.hdfs.fileType = CompressedStream
# 压缩方式
a2.sinks.k2.hdfs.codeC = gzip

执行Flume

flume-ng agent -n a2 -c $FLUME_HOME/conf/ -f kafka2hdfs.conf -Dflume.root.logger=INFO,console

HIVE建表

-- 建库
CREATE DATABASE `ec` COMMENT '电商'
LOCATION 'hdfs://hadoop105:8020/user/hive/warehouse/ec.db';
USE `ec`;

-- ODS层
DROP TABLE IF EXISTS `ods_pv`;
CREATE EXTERNAL TABLE `ods_pv`(
    `user_id`      STRING  COMMENT '用户ID',
    `page_id`      STRING  COMMENT '页面ID',
    `timestamp`    BIGINT  COMMENT '毫秒数',
    `hms`          TIMESTAMP  COMMENT '年月日时分秒',
    `user`         STRING  COMMENT '用户',
    `page`         STRING  COMMENT '页面'
) COMMENT '页面浏览'
PARTITIONED BY (`ymd` STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.JsonSerDe';

-- DWD层
DROP TABLE IF EXISTS `dwd_pv`;
CREATE EXTERNAL TABLE `dwd_pv`(
    `user_id`  STRING  COMMENT '用户ID',
    `page_id`  STRING  COMMENT '页面ID'
) COMMENT '页面浏览'
PARTITIONED BY (`ymd` STRING)
STORED AS ORC
TBLPROPERTIES('orc.compress'='snappy');

-- DWS层
DROP TABLE IF EXISTS `dws_pv`;
CREATE EXTERNAL TABLE `dws_pv`(
    `user_id`  STRING  COMMENT '用户ID',
    `page_id`  STRING  COMMENT '页面ID',
    `cnt`      BIGINT  COMMENT '计数'
) COMMENT '页面浏览'
PARTITIONED BY (`ymd` STRING)
STORED AS ORC
TBLPROPERTIES('orc.compress'='snappy');

-- DWT层
DROP TABLE IF EXISTS `dwt_pv`;
CREATE EXTERNAL TABLE `dwt_pv`(
  `page_id`  STRING  COMMENT '页面ID',
  `pv_1d`    BIGINT  COMMENT 'page view',
  `pv_3d`    BIGINT  COMMENT '近3天PV',
  `pv_7d`    BIGINT  COMMENT '近7天PV',
  `uv_1d`    BIGINT  COMMENT 'unique visitor',
  `uv_3d`    BIGINT  COMMENT '近3天UV',
  `uv_7d`    BIGINT  COMMENT '近7天UV'
) COMMENT '页面浏览'
PARTITIONED BY (`ymd` STRING)
STORED AS ORC
TBLPROPERTIES('orc.compress'='snappy');

ODS=>DWD=>DWS(首次)

-- 数据装载
LOAD DATA INPATH '/user/hive/warehouse/kafka/2022-03-10' INTO TABLE ec.ods_pv
PARTITION(ymd='2022-03-10');

-- 设置动态分区
SET hive.exec.dynamic.partition=true;
SET hive.exec.dynamic.partition.mode=nonstrict;

-- ODS=>DWD
INSERT OVERWRITE TABLE dwd_pv PARTITION(ymd)
SELECT
    user_id,
    page_id,
    ymd
FROM ods_pv
WHERE hms IS NOT NULL;

-- DWD=>DWS
INSERT OVERWRITE TABLE dws_pv PARTITION(ymd)
SELECT
    user_id,
    page_id,
    COUNT(1) AS cnt,
    ymd
FROM dwd_pv
GROUP BY user_id,page_id,ymd;

ODS=>DWD=>DWS=>DWT(每日)

-- LOAD
LOAD DATA INPATH '/user/hive/warehouse/kafka/{ymd}' INTO TABLE ec.ods_pv PARTITION(ymd='{ymd}');

-- ODS=>DWD
INSERT OVERWRITE TABLE dwd_pv PARTITION(ymd='{ymd}')
SELECT user_id,page_id FROM ods_pv
WHERE ymd='{ymd}' AND hms IS NOT NULL;

-- DWD=>DWS
INSERT OVERWRITE TABLE dws_pv PARTITION(ymd='{ymd}')
SELECT 
    user_id,
    page_id,
    COUNT(1) AS cnt
FROM dwd_pv
WHERE ymd='{ymd}'
GROUP BY user_id,page_id;

-- DWS=>DWT
INSERT OVERWRITE TABLE dwt_pv PARTITION(ymd='{ymd}')
-- 各页面流量(page view)
(
    SELECT
        page_id,
        SUM(if(ymd='{ymd}',cnt,0))                                 AS pv_1d,  -- 最近1天PV
        SUM(if(ymd>=DATE_ADD('{ymd}',-2),cnt,0))                   AS pv_3d,  -- 最近3天PV
        SUM(cnt)                                                   AS pv_7d,  -- 最近7天PV
        COUNT(DISTINCT(if(ymd='{ymd}',user_id,NULL)))              AS uv_1d,  -- 最近1天UV
        COUNT(DISTINCT if(ymd>=DATE_ADD('{ymd}',-2),user_id,NULL)) AS uv_3d,  -- 最近3天UV
        COUNT(DISTINCT user_id)                                    AS uv_7d   -- 最近7天UV
    FROM dws_pv
    WHERE ymd>=DATE_ADD('{ymd}',-6) AND ymd<='{ymd}'
    GROUP BY page_id
)UNION ALL(
-- 总流量(total view)
    SELECT
        '总' AS page_id,
        SUM(if(ymd='{ymd}',cnt,0))                                 AS pv_1d,  -- 最近1天PV
        SUM(if(ymd>=DATE_ADD('{ymd}',-2),cnt,0))                   AS pv_3d,  -- 最近3天PV
        SUM(cnt)                                                   AS pv_7d,  -- 最近7天PV
        COUNT(DISTINCT(if(ymd='{ymd}',user_id,NULL)))              AS uv_1d,  -- 最近1天UV
        COUNT(DISTINCT if(ymd>=DATE_ADD('{ymd}',-2),user_id,NULL)) AS uv_3d,  -- 最近3天UV
        COUNT(DISTINCT user_id)                                    AS uv_7d   -- 最近7天UV
    FROM dws_pv
    WHERE ymd>=DATE_ADD('{ymd}',-6) AND ymd<='{ymd}'
)

Python2脚本

# coding:utf-8
from sys import argv
from datetime import date, timedelta
from subprocess import check_output


class HIVE:
    def __init__(self, **kwargs):
        # 从命令行获取参数:https://blog.youkuaiyun.com/Yellow_python/article/details/122088401
        self.parameters = kwargs
        for a in argv[1:]:
            k, v = a.split('=', 1)
            self.parameters[k.strip()] = v.strip()

    @property
    def yesterday(self):
        yesterday = date.today() - timedelta(days=1)
        return yesterday.strftime('%Y-%m-%d')

    @property
    def ymd(self):
        """获取日期,格式YYYY-MM-DD,默认昨天"""
        return self.parameters.get('ymd', self.yesterday)

    def e(self, sql):
        sql = sql.format(ymd=self.ymd).replace("'", '"')
        db = self.parameters['database']  # 库名
        cmd = "hive --database '{}' -e '{}'".format(db, sql)
        print(cmd)
        return check_output(cmd, shell=True).strip()


h = HIVE(database='ec')
h.e('''
此处放入每日SQL
''')

其它补充

-- 各页面UV和PV时间序列分析
SELECT
    page_id,
    SUM(cnt) AS pv,
    COUNT(1) AS uv,
    ymd
FROM dws_pv
GROUP BY page_id,ymd
ORDER BY page_id,ymd;
-- 总UV和PV时间序列分析
SELECT
    SUM(cnt) AS pv,
    COUNT(DISTINCT user_id) AS uv,
    ymd
FROM dws_pv
GROUP BY ymd
ORDER BY ymd;
SpringBoot AOP 实现埋点日志记录(完整源码) SpringBoot AOP 实现埋点日志记录(完整源码)一、Spring Boot AOP二、AOP的常用术语三、源码实现埋点日志记录3.1 项目结构图3.2 代码实现 随着互联网技术的深入发展,各个系统的日活用户、访问量、点击量成指数上升,为保证系统的安全性、易用性,每个系统都需要对用户的访问做埋点记录、跟踪,从而获取用户常用的操作习惯,同时也方便系统管理人员对系统做日常记录、跟踪。 一、Sp... 阅读详情

相关推荐

大数据(1)--初识

1大数据 1.1什么是大数据? 大数据就是海量数据的处理。 大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产(资源)。 系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、panda

qq_45694626的博客 746

(二)日志埋点

1.日志埋点介绍 所谓埋点,就是在业务系统的程序中,植入一些收集事件数据的SDK(工具代码),进行各种事件的收集; 埋点分为两种 埋点代码可以植入到业务系统的后端程序中(比如java、php等) 也可以植入到业务系统的前端程序(原生app、页面js、微信小程序)中 ...

weixin_45575210的博客 5896

大数据-日志接收处理

文章目录网站日志分析系统1.数据收集:JS埋点2.日志数据的提交方式3.在哪里发起Get请求?4.系统架构设计5. 运行jt-logserver5.1 Idea中打开项目5.2 查看tomcat插件配置5.3 启动5.4 测试5.5 关闭5.6 访问网页产生日志6.指标说明7.项目的整合 网站日志分析系统 1.数据收集:JS埋点 传统埋点方式的缺点: 直接嵌入业务系统,代码不好维护,影响业务系统性能。 JS埋点优点: 日志收集系统与业务系统相互独立,互不影响,不占用业务系统性

m0_58818478的博客 1505

日志埋点说明

1:日志埋点是业务系统开发端的工作,数据开发人员仅需要提出数据埋点需求 埋点可以植入到业务系统后端和前端 埋点生成的日志统一为JSON格式, 各个终端渠道的埋点日志,都由公共属性字段,和事件属性字段组成; 不同终端渠道,公共属性字段略有不同; 事件属性则根据事件类型,灵活多样; 一条日志一般500字节作用, 一条日志有多少字段 40,50个,日志有事件详情,不同事件的字段是不同的如{ 用户账户 appid,公司内部开发用于的groupid ...

weixin_48109576的博客 2942

大数据时代交易数据的安全审计方法

对于两个仅相差一条记录的数据集DDD和D′D'D′,以及任意输出集合SSS,若算法MMMPr⁡MD∈S≤eϵ⋅Pr⁡MD′∈SδPrMD∈S≤eϵ⋅PrMD′∈Sδ则称MMM满足ϵδϵδ-差分隐私。ϵ\epsilonϵ:隐私预算(越小,隐私保护越强,但数据可用性越低);δ\deltaδ:失败概率(通常设置为10−610^{-6}10−6。

AI架构师小马 767

基于大数据技术的用户日志分析及可视化平台全链路实践

在大数据技术体系中,日志数据是洞察用户行为与系统健康的关键资产。如何将海量、分散的用户日志转化为可支撑决策的指标体系,并最终以直观的可视化方式呈现,是数据工程领域的核心挑战之一。一个完整的大数据平台通常涵盖数据采集、消息缓冲、分布式存储、离线计算与查询检索引擎等核心组件,通过合理的链路设计实现数据的流转与加工。该体系不仅能够解决日志检索与趋势分析的基础问题,还能支撑留存计算、异常监控等复杂业务场景。本文围绕用户日志分析场景,系统讲解从事件模型定义、模拟数据生成,到Flume与Kafka接入、Spark清洗聚

weixin_26950847的博客 294

大数据项目实战---电商埋点日志分析(第一部分,往hdfs中写入埋点日志的数据)

1)生成埋点日志 2)

hailunw的专栏 1440

Hive用户行为分析实战:从埋点日志到漏斗归因

用户行为分析是大数据领域的核心场景,其本质是对海量、不可变、强时间序的日志数据进行多维下钻与链路还原。Hive凭借HDFS底层存储、精准分区裁剪和可扩展的执行引擎(Tez/LLAP/Spark),成为T+1级别行为宽表构建与归因建模的事实标准。相比MySQL的索引瓶颈和Spark SQL的DAG重建开销,Hive通过物理分区(如dt/hour二级分区)、分桶(CLUSTERED BY user_id)与DISTRIBUTE BY语义,显著降低shuffle压力与查询延迟。在实际应用中,需结合窗口函数(LAG

weixin_30694389的博客 213

大数据 -- 01-- 简介、环境搭建

大数据 简单来说大数据就是海量数据及其处理方式. 大数据(big data),IT行业术语,是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》 [1] 中 大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。 大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多

时光里的博客 2760

Hadoop伪分布式日志分析实战:Nginx流量处理与Hive建模

日志分析是大数据工程的基础场景,其核心在于对海量、不可变、多格式的原始日志进行可靠采集、高效存储与灵活查询。Hadoop凭借HDFS高吞吐写入、YARN稳定资源调度及Hive成熟元数据管理能力,成为中小规模流量日志(如Nginx access.log)离线分析的高性价比底座。本文聚焦伪分布式部署这一低门槛起点,详解Flume实时接入、Hive RegexSerDe字段解析、分区表自动加载等关键技术,覆盖从日志落地到TOP慢接口、异常IP聚类等典型业务指标的端到端实现。特别适配日均200GB级流量、无专职大数

weixin_29044713的博客 242

FortiGate-60E防火墙忘记密码?用Console线+TFTP重装固件v7.0.9全流程

本文详细介绍了当FortiGate-60E防火墙忘记密码且物理重置无效时,如何通过Console线连接并利用TFTP服务器重装固件(如v7.0.9)的全流程。从恢复原理、工具准备、网络配置到逐步执行命令,提供了完整的实战指南,帮助管理员彻底恢复设备出厂设置并重置密码。

snow3的博客 333

大数据简介

1 大数据 1.1 什么是大数据 大数据就是海量数据的处理。 1.2 为什么要学习大数据 1.3 课程设计 1.4 大数据相关技术 1.4.1 海量数据获取 1.4.2 海量数据存储 1.4.3 海量数据处理 2 网站日志分析系统 2.1 数据收集:JS埋点 2.1.1 前端页面如何将数据发送到后端系统? 2.1.2 在哪里发起Get请求? 2.2 系统架构设计 2.3 八个重要指标 2.4 项目搭建 2.4.1 JS 2.4.2 Log4j 2.4.3 Servlet 2.5

hr_173193598的博客 441

不会ps,你也可以成为ps高手,最强傻瓜式人像一键磨皮美白瘦脸美妆PS插件

比如:美肤是用来去斑点的,如果效果不太理想,就加大百分比,反之就减小。瘦脸如果脸胖的就打开,正常的就关闭。所谓的一键调节,要不只能调节一种效果,要不就是个预设,然后让你自己再调。同时,该软件还加入了贴心的批量处理功能,能同时处理上千张照片,让您喝着茶也能将工作做完。、自动检测照片中的人脸,包括鼻子,嘴巴,耳朵,眼睛和眉毛。、依托强大的脸部识别功能,可以高效的对人物全身皮肤进行智能识别,处理,使肤质平滑、过渡均匀。,这是网上下载的模糊照片,经过简单处理,你可以发现,眼睛变的更亮,皮肤更白,眼袋消失。

心语家园 - www.xinyucn.cc 2903

大数据项目实战---电商埋点日志分析(第三部分,DWD层初步解析)

构建DWD层 往DWD层加载数据

hailunw的专栏 490

Power BI实战:从数据清洗到可视化报表的完整流程

本文详细介绍了使用Power BI进行数据分析的完整流程,从数据获取、清洗整理到建模与可视化。通过实战案例,重点讲解了连接MySQL数据库、使用Power Query进行数据清洗、利用DAX创建核心度量值以及设计交互式报表的关键步骤与技巧,帮助用户高效完成从原始数据到专业可视化报表的转化,实现数据驱动决策。

weixin_29070721的博客 399

S32K144 ADC硬件触发+DMA传输实战:从寄存器配置到数据采集全流程

本文详细解析了S32K144微控制器中ADC硬件触发与DMA传输的协同工作机制,提供了从寄存器配置到数据采集的全流程实战指南。通过PDB定时触发ADC转换,并利用DMA实现数据自动搬运,构建了高效、实时的汽车级数据采集系统,有效释放CPU资源,满足汽车电子应用的严苛要求。

weixin_29194693的博客 477

第一章:初识大数据、项目介绍、环境搭建

讲师:董长春 企鹅:1097895173 手机:15011003101 大数据 什么是大数据? 简单来说大数据就是海量数据及其处理。 大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产(资源)。 在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》[2]中大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。大数据的5V特...

董长春 8093

第12步 支持向量机(SVM)

搭建SVM

Jet4505的博客 1052

大数据最基础的简介 必看!!!

1.1什么是大数据? 大数据就是海量数据的处理。 大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产(资源)。 在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》 [2] 中大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。...

chensiyuan0805的博客 415

基于C++和Qt开发IEC104规约主站调试软件(第二章)

本章节主要讲解iec104主站软件界面设计和从站的连接功能以及部分功能代码的展示。

半青年的博客 862

VS2019编译使用log4cplus 1.2.0

logger.properties 文件。第三步,创建项目来测试,配置库。第二步,使用VS2019编译。

h a 6 6 6 c k 为 你解决复杂难题! 529

大数据千亿级离线数仓项目第四天 Flume采集 ETL处理和解决Spark程序倾斜

千亿级数仓第04天讲义 课程目标 了解用户行为日志数据采集方案 掌握flume自定义拦截器开发与使用 掌握日志数据ETL处理程序 掌握spark程序数据倾斜解决方案 数据采集-点击流日志数据 网站流量日志数据获取 随着网站在技术和运营上的不断技术发展,人们对数据的要求越来越高,以求实现更加精细的运营来提升网站的质量。所以数据的获取方式也随着网站技术的进步和人们对网站数据需求的加深而不断地发展。从使用发展来看,主要分为2类: 网站日志文件(Log files) 页面埋点js自定义采集

fegus的博客 1566

PHPStorm携手ThinkPHP8:开启高效开发之旅

本文围绕使用 PHPStorm 进行 ThinkPHP8 开发展开,先介绍开发环境搭建与 Xdebug 配置,再阐述 PHPStorm 集成 ThinkPHP8 的步骤,包括项目导入、解释器和服务器配置。还讲解了项目开发基础、数据库操作、高级技巧、调试处理及部署上线等内容,为开发者提供了从环境搭建到项目上线的完整指引,助力高效开展 ThinkPHP8 开发工作。

邓邓子的博客 1545

Hive实战指南:用户行为日志分析从采集到查询的全流程解析

通过本文的实战案例,我们完整走过了用户行为日志分析的全链路:从数据采集、ETL处理到最终的查询分析。Hive作为大数据生态中的核心组件,不仅简化了海量数据的处理流程,更通过类SQL的语法降低了数据分析的门槛,让非技术背景的业务人员也能参与到数据驱动的决策中。在大数据技术快速演进的今天,Hive依然保持着不可替代的地位。它能够无缝集成Hadoop生态系统中的其他工具(如Spark、Flink),支持多种数据格式和存储系统,同时具备良好的扩展性和稳定性。

zuiyuelong的博客 1020

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

电商平台日志分析系统(大数据) 上(不完整-版本不对应)

分析针对{历史数据,每天的增量数据} 站长工具 seo 优化, pageRank http://seo.chinaz.com/www.taobao.com PV (page view ) UV(user view) 页面访问量,用户访问量 一针对增量数据进行分析。 设定淘宝300G/每天; 唯品会访问量为17G 建立数据表时预留两个字段,同样程序功能也...

weixin_30501857的博客 1068

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: 大数据(5e)Spark之Scala读写HBase之Phoenix表
下一篇: 读书有用论
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值