离线数仓(8):ODS层实现之导入流量日志

13 篇文章 12 订阅
订阅专栏

0. 相关文章链接

 离线数仓文章汇总 

1. ODS层概述

1.1. 数仓分层图

1.2. 数仓数据走向图

1.3. 实现目标

根据如上数仓分层图和数仓数据走向图,可以看出ods层的主要目的有如下3点:

  1. 保持数据原貌不做任何修改,起到备份数据的作用
  2. 数据采用压缩,减少磁盘存储空间(例如:原始数据100G,可以压缩到10G左右)
  3. 创建分区表,防止后续的全表扫描

所以在此次的数仓分层重构中,ods层分别实现了上述3点:

  1. 将流量数据不做任何修改的写入到文件系统中
  2. 使用了parquet格式,但由于平台和业务原因没有在parquet上再使用例如lzo、snappy等压缩了,但单独的parquet格式压缩也对文本进行了较好的压缩了
  3. 在建表时创建了分区表

2. 数据准实时进入文件系统

        根据上述数仓数据走向图,前面的日志服务器接收日志和通过flume将日志写入到kafka中就不详细介绍了,只介绍数据到达kafka后的后续流向。

        数据到达kafka后,可以使用flume来对接kafka,然后将数据写入到文件系统中,并且flume还能设置文件大小时间等滚动,但是由于博主使用的是华为云的DLI服务,没有找到flume组件,所以直接使用FlinkSQL从kafka中获取数据,并按时更新到OBS文件系统中了。

        同时,在将数据写入到OBS文件系统中时,还设置了parquet格式,这样只要表中对应分区的元数据有了,就能做到查询数据时分钟级更新(更新时间按照FlinkSQL的Checkpoint时间来算,博主这里使用的是每3分钟更新,即1天会生成480个文件,此更新时间可以根据实际情况来设置,综合考虑小文件和Flink算子反压以及业务需要的数据更新时间等,一般来说在1分钟到5分钟内均可),这为后续实现准实时需求(即要统计当天截止到现在的数据,又没达到完全实时的地步)提供了基础。

具体实现如下代码所示(需要现在OBS并行文件系统中创建对应目录):


-- 创建日期格式化函数,将10位时间戳转换成8位年月日(yyyyMMdd)
CREATE FUNCTION date_formatted AS 'com.fumi.flink.sql.udf.DateFormattedUDF';

-- ============================================================================
-- bigdata_new_app_log_store 主题数据 (APP埋点中的点击日志数据)
-- 创建kafka的source源
CREATE SOURCE STREAM bigdata_new_app_log_store_source (
	__time__ STRING,
	__topic__ STRING,
	scdata STRING,
	__source__ STRING,
	__receive_time__ STRING,
	`topic` STRING,
	`__client_ip__` STRING
) WITH (
	type = "kafka",
	kafka_bootstrap_servers = "xxx1:9092,xxx2:9092,xxx3:9092",
	kafka_group_id = "behavior_log_to_obs",
	kafka_topic = "bigdata_new_app_log_store",
	encode = "json",
	json_config = "__time__=__time__;__topic__=__topic__;scdata=scdata;__source__=__source__;__receive_time__=__tag__:__receive_time__;__client_ip__=__tag__:__client_ip__;topic=topic;"
);


-- 创建obs的sink源
CREATE SINK STREAM bigdata_new_app_log_store_sink (
	__time__ BIGINT,
	__topic__ STRING,
	scdata STRING,
	__source__ STRING,
	__receive_time__ BIGINT,
	`topic` STRING,
    `__client_ip__` STRING,
	`dt` STRING
) PARTITIONED BY(dt) WITH (
	type = "filesystem",
	file.path = "obs://yishou-test/yishou_data_qa_test.db/ods_new_app_log_store_dt",
	encode = "parquet",
	ak = "akxxx",
	sk = "skxxx"
);


-- 将source源数据写入到sink源中
INSERT INTO 
	bigdata_new_app_log_store_sink
SELECT
	cast(__time__ as BIGINT) as __time__,
	__topic__ ,
	scdata ,
	__source__ ,
	cast(__receive_time__ as BIGINT) as __receive_time__ ,
	`topic`,
	`__client_ip__`,
    date_formatted(__time__, 'yyyyMMdd') as dt
FROM
	bigdata_new_app_log_store_source;




-- ============================================================================
-- bigdata_yishou_log_exposure 主题数据 (APP埋点中的曝光日志数据)
-- 创建kafka的source源
CREATE SOURCE STREAM bigdata_yishou_log_exposure_source (
	__time__ STRING,
	__topic__ STRING,
	scdata STRING,
	__source__ STRING,
	__receive_time__ STRING,
	`topic` STRING,
	`__client_ip__` STRING
) WITH (
	type = "kafka",
	kafka_bootstrap_servers = "xxx1:9092,xxx2:9092,xxx3:9092",
	kafka_group_id = "behavior_log_to_obs",
	kafka_topic = "bigdata_yishou_log_exposure",
	encode = "json",
	json_config = "__time__=__time__;__topic__=__topic__;scdata=scdata;__source__=__source__;__receive_time__=__tag__:__receive_time__;__client_ip__=__tag__:__client_ip__;topic=topic;"
);


-- 创建obs的sink源
CREATE SINK STREAM bigdata_yishou_log_exposure_sink (
	__time__ BIGINT,
	__topic__ STRING,
	scdata STRING,
	__source__ STRING,
	__receive_time__ BIGINT,
	`topic` STRING,
    `__client_ip__` STRING,
	`dt` STRING
) PARTITIONED BY(dt) WITH (
	type = "filesystem",
	file.path = "obs://yishou-test/yishou_data_qa_test.db/ods_yishou_log_exposure_dt",
	encode = "parquet",
	ak = "akxxx",
	sk = "skxxx"
);


-- 将source源数据写入到sink源中
INSERT INTO 
	bigdata_yishou_log_exposure_sink
SELECT
	cast(__time__ as BIGINT) as __time__,
	__topic__ ,
	scdata ,
	__source__ ,
	cast(__receive_time__ as BIGINT) as __receive_time__ ,
	`topic`,
	`__client_ip__`,
    date_formatted(__time__, 'yyyyMMdd') as dt
FROM
	bigdata_yishou_log_exposure_source;



-- ============================================================================
-- ......
-- 

注意:

  • 上述是使用华为云的FlinkSQL实现的,跟开源的FlinkSQL有些不同,但大体类似,可以根据实际情况来进行开发;
  • 博主的流量日志一共有9个大的主题,上述只贴出来了2个,同样可以根据实际情况来添加修改;
  • 上述使用了一个自定义函数,将10位时间戳转换成了8位的年月日格式,在开源的FlinkSQL中已有类似函数,不过华为云的FlinkSQL这个版本中还没有,所以添加了自定义函数,具体情况具体开发即可。

在华为云的DLI服务中,运行界面如下所示:

  • FlinkSQL作业详情配置图

  • FlinkSQL任务列表图 

  • OBS文件系统(正常运行后每3分钟生成一个新的文件)

3. 创建外部表

-- ods_new_app_log_store_dt 主题
DROP TABLE if exists ${yishou_data_dbname}.ods_new_app_log_store_dt;

create table if not exists ${yishou_data_dbname}.ods_new_app_log_store_dt (
	__time__ BIGINT comment '时间',
	__topic__ STRING comment '埋点模块主题名',
	scdata STRING comment '核心数据',
	__source__ STRING comment '数据来源',
	__receive_time__ BIGINT comment '日志服务器接收时间',
	`topic` STRING comment '埋点模块主题名',
    `__client_ip__` STRING comment '客户端IP地址',
	`dt` STRING comment '日期分区'
) USING parquet PARTITIONED BY (dt) 
COMMENT 'ods层ods_new_app_log_store主题数据,所有该主题的原始数据都在此表中' 
LOCATION 'obs://yishou-test/yishou_data_qa_test.db/ods_new_app_log_store_dt'
;

-- ods_yishou_log_exposure_dt 主题
DROP TABLE if exists ${yishou_data_dbname}.ods_yishou_log_exposure_dt;

CREATE TABLE ${yishou_data_dbname}.ods_yishou_log_exposure_dt (
	__time__ BIGINT comment '时间',
	__topic__ STRING comment '埋点模块主题名',
	scdata STRING comment '核心数据',
	__source__ STRING comment '数据来源',
	__receive_time__ BIGINT comment '日志服务器接收时间',
	`topic` STRING comment '埋点模块主题名',
    `__client_ip__` STRING comment '客户端IP地址',
	`dt` STRING comment '日期分区'
) USING parquet PARTITIONED BY (dt) 
COMMENT 'ods层ods_yishou_log_exposure主题数据,所有该主题的原始数据都在此表中' 
LOCATION 'obs://yishou-test/yishou_data_qa_test.db/ods_yishou_log_exposure_dt'
;

注意:第一次建表后需要对表的分区进行msck,执行如下命令:

MSCK REPAIR TABLE ${yishou_data_dbname}.ods_new_app_log_store_dt;
MSCK REPAIR TABLE ${yishou_data_dbname}.ods_yishou_log_exposure_dt;

之后查看数据条数可以看到每3分钟会更新一次最新数据:

由于这是重构,之前的历史数据是存在旧表里,可以直接从旧表中查出数据,写入新表中即可。

4. 创建调度任务

在此层中调度任务只需要在凌晨添加当天分区即可,因为数据会实时进入obs文件系统,所以只要添加分区在元数据中有该分区就能直接查询最新的数据,脚本如下:

-- 在 ods_new_app_log_store_dt 表中增加对应日期分区(每天凌晨执行,添加当天分区即可)
ALTER TABLE ${yishou_data_dbname}.ods_new_app_log_store_dt ADD if not exists PARTITION (dt=${gmtdate});

作业调度如下(可以凌晨0点0分调度):

注意:对历史数据,当集群资源空闲时,还可以通过同一张表自己写入自己来合并小文件,但其实感觉没有必要;因为当每3分钟生成一个文件时,能看到一般情况下文件大小为60M左右,这不会造成文件系统小文件过多,并且自己写入自己也存在一定风险;并且可以对更新时间进行调节,控制一定文件数量即可。


注:其他 离线数仓 相关文章链接由此进 ->  离线数仓文章汇总


2.离线数仓ODS设计开发
yunweijie_cn的博客
02-22 521
文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import
编写简单的hql命令_数据仓库工具–Hive(归纳第四部分: HQL命令)
weixin_32133403的博客
12-24 392
写在开头本章是Hive教程第四部分归纳,着重于DQL命令文章内容输出来源:拉勾教育大数据高薪训练营DQL语句在占了Hive很大的比重,是进行sql开发的重要基础。DQL命令DQL — Data Query Language 数据查询语言首当其冲就是select语句select语法:SELECT [ALL | DISTINCT] select_expr, select_expr, …FROM tab...
电商数仓ODS-----日志数据装载
m0_46914845的博客
08-03 503
电商数仓ODS-----日志数据装载
离线数仓(12):DWD实现流量日志解析
yang_shibiao的博客
09-09 1217
针对流量日志,在ODS很多流量日志主题会聚合在一起(博主这里ODS分为9个大主题,例:APP点击、APP曝光、H5所有、路径等),所以到DWD会将ODS大主题根据业务分为小主题,比如APP商品点击、APP商品曝光、商品详情页面曝光等;一般情况下,流量日志使用的是批量上报的方式,所以需要对一些主题的流量日志进行炸裂(例:APP商品曝光等);流量日志在DWD为每天一个分区,存储当天的增量数据,并注意要使用压缩;流量日志在DWD一个业务主题为一张表;
ODS实现过程
weixin_34266504的博客
07-03 461
ODS实现过程   一、ODS是什么   ODS是什么?我根据自己的理解,ODS是一个将面向主题的,动态增长的,非实时的,消除了原始数据库差异的,对原始库最大限度进行冗余处理后得到的数据集,通过ODS消除了数据间的关联细节,实现了对某一领域数据进行统一处理(比如查询、统计)的快捷方法。   ODS的核心是对业务粒度进行划分,进而设计出合理的ODS表。 ODS数据的来源一般是从原有数据...
实时数仓离线数仓的概念
一个记录普通男孩在IT界学习思考感悟的地方
03-06 2576
目录 1、数据仓库的发展趋势 1.1数据仓库的趋势 1.2 数据仓库的发展 2、数据仓库架构的演变 2.1 传统数仓架构 2.2 离线大数据架构 2.3 Lambda架构 2.4 Kappa架构 2.5混合架构 3、三种大数据数据仓库架构 3.1 离线大数据架构 3.2 Lambda 架构 3.3 Kappa 架构 3.4 Lambda 架构与 Kappa 架构的对比 4、实时数仓建设思路 5、菜鸟实时数仓案例 5.1 整体设计 5.2 数据模型 6、美团点评基于...
离线数仓总结
wywwyx090104的博客
08-17 3844
离线数仓总结 一、1、背景介绍(某APP上线后,由于业务模式新颖,市场需求量大,经过一段时间的精心运营后,逐渐积累起了上千万会员,以及三四百万的日活量, app的业务功能和产品种类、数量也急速膨胀;主要问题有:营销分析断;产品迭代无法量化;用户运营不精准;全局运营指标监控不实时) 2、需求总览:流量域分析 2.1、基础数据分析(整体概况、用户获取、活跃与留存、事件转化、用户特征) 2.2、基础数据分析指标概览 整体概况:产品整体的使用情况,包括用户量、访问情况、留存等帮助对产品整体指标有一个大致的了解(累
大数据-案例-离线数仓-在线教育:MySQL(业务数据)-ETL(Sqoop)->Hive数仓ODS-数据清洗->DW(DWD-统计分析->DWS)】-导出(Sqoop)->MySQL->可视化
u013250861的博客
07-13 2030
一、访问咨询主题看板 1. 需求分析 目的: 分析每一个调研需求需要计算什么指标, 以及计算这个指标需要通过那些维度,而且还包括计算这个需求涉及 到那些表和那些字段 需求1: 统计指定时间段内,访问客户的总数量。能够下钻到小时数据 指标: 访问量 维度: 时间维度: 年 季度 月 天 小时 涉及到哪些表: web_chat_ems_2019_12 涉及到哪些字段: 时间维度: create_time 说明: 发现create_time字段中包含有年 月 天 小时
实时数仓VS离线数仓.pdf
07-06
- 离线大数据架构:数据源通过离线ETL导入,采用ODS-DWD-DM三模型,常使用HDFS/Hive,ETL可使用MapReduce或HiveSQL。 - Lambda架构:包含实时和离线两部分,需要维护两套逻辑,但能提供实时反馈和批量准确结果。...
大数据-案例-离线数仓-电商:【MySQL(业务)-ETL(Kettle)】+【前端JS埋点->日志->Flume->HDFS->ETL(SparkRDD)】->Hive数仓->MySQL->可视化
u013250861的博客
01-30 2093
大数据-BI案例(二)-电商:数据仓库+OLAP【MySQL-ETL(Kettle)-> Hive(ODS-数据清洗->DW(DWD-统计分析->DWS))-导出结果->MySQL】-> 可视化
数仓搭建-ODS
最新发布
weixin_44616592的博客
11-27 1138
(1)在/home/atguigu/bin目录下创建脚本hdfs_to_ods_db_init.sh。注意:[ -n 变量值 ]不会解析数据,使用[ -n 变量值 ]时,需要对变量加上双引号(" ")在企业开发中,除了自己用的临时表,创建内部表外,绝大多数场景都是创建外部表。(1)在/home/atguigu/bin目录下创建脚本hdfs_to_ods_db.sh。首日脚本与每日脚本最大的区别就是地区省份表只需要首日加载,每日脚本无需加载。3)创建分区表,防止后续的全表扫描,在企业开发中大量使用分区表。
带有ODS的体系结构中数据仓库的设计方法
jackfor001的专栏
11-21 937
在一般的数据仓库应用系统中,根据系统体系结构的不同,数据仓库设计的内容和范围不尽相同,并且设计方法也不尽相同,下面的两幅图示分别表示带有ODS数据仓库应用系统体系结构和不带ODS数据仓库应用系统体系结构。本文将说明两个体系结构上的差异以及这种差异造成的设计方法的不同,并且重点介绍带有ODS的体系结构中数据仓库的设计方法。   在数据仓库的设计指导思想中,数据仓库的概念定义是非常重要的,数据
电商数仓(ods )
a1786742005的博客
04-30 5078
一、ods 介绍 1、保持数据原貌不做任何修改,起到备份数据的作用。 2、数据采用 LZO 压缩,减少磁盘存储空间。100G 数据可以压缩到 10G 以内。 3、创建分区表,防止后续的全表扫描,在企业开发中大量使用分区表。 4、创建外部表,在企业开发中,除了自己用的临时表,创建内部表外,绝大多数场景都是创建外部表。 二、用户行为数据 1、启动日志ods_start_log // 创建启动日志...
离线数仓(9):ODS实现导入业务数据
yang_shibiao的博客
09-01 2397
保持数据原貌不做任何修改,起到备份数据的作用数据采用压缩,减少磁盘存储空间(例如:原始数据100G,可以压缩到10G左右)创建分区表,防止后续的全表扫描将业务数据写入到数仓中,并每天进行一个全量快照备份(其实可以只备份新增和变化的数据,但我们根据实际业务情况和其他各方面等考虑,进行了全量快照备份,并且如果进行全量快照备份的话,保留180天数据完全足够)
封装如何更改计算机名,封装后修改系统封装首席执行官SC的配置文件方法
weixin_42492000的博客
08-02 1452
封装后如何修改系统封装首席执行官SC的配置文件?由于这个问题很多人重复的问,所以我今天就封装后如何修改SC的配置文件详细的阐述一下方法。修改之前你需要知道的:修改之前你首先要确定你是否选择了SC里的“防止非法篡改系统IE首页”、“防止非法篡改当前系统OEM信息及部署图片”、“指定文件进行锁定防篡改”,这3项如果选择了其中的任意一项,那么不好意思,你的配置文件不能再次进行修改了,这样做的目的也就是为...
离线数仓 (十一) -------- ODS 搭建
在森林里麋了鹿
10-26 572
ODS 搭建
离线数仓常见问题
hua_yuan2015的博客
05-19 1543
数据漂移:ODS的表在同一个业务日期数据中包含前一天或者后一天凌晨附近的数据或者丢失当天的变更数据
离线数仓搭建之ODS(原始数据
qq_54021998的博客
05-12 1023
离线数仓ODS(原始数据)基于Hive on Spark的搭建 1.预先将原始数据(页面埋点的josn数据采集到HDFS上) 2.配置Hive on Spark (1) 在Hive所在节点部署Spark (2) 在hive中创建spark配置文件 (3) 向HDFS上传Spark纯净版jar包 (4) 修改hive-site.xml文件 3.配置yarn 4.使用工具连接hive,在Hive中创建ODS (1)用户行为数据 创建lzo压缩分区表 drop table if exists ods_l
离线数仓实践一
miaowugui的专栏
09-03 1178
絮叨 最近感觉工作一直在做一些重复性的东西,自我提升太小,想要做一些自我提升,想做一些大数据相关的学习,但是发现这个是个系统比较庞大的东西,涉及到的东西多,自学的话不知从何下手,而且大部分的资料都比较零散,不系统,感觉还是需要一个系统的课程。正好看到拉钩推出的大数据训练营,看了下课程内容比较适合自己,有系统的讲解也有几个项目的实践,现在也学了两个月开始做第一个项目实践了,感觉讲师讲的深入浅出,既学会了相关的技术,理解相关技术的原理,使用场景,相同类型不同框架的优缺点。课后也有讲师在线答疑,能及时的解决学习
写文章

热门文章

  • 机器学习:欧氏距离(Euclidean Distance) 26678
  • 机器学习:余弦距离(Cosine Dsitance) 13980
  • Typora最后的免费版本 12972
  • 推荐系统(7):推荐算法之基于协同过滤推荐算法 11185
  • 开发工具 文章汇总 8516

分类专栏

  • 开发工具 5篇
  • 开发随笔 9篇
  • 开发语言 1篇
  • Java 6篇
  • Python 18篇
  • 开发环境 1篇
  • Linux 8篇
  • Docker
  • 大数据 1篇
  • 大数据环境搭建 35篇
  • Zookeeper 8篇
  • Hadoop 39篇
  • Hive 21篇
  • Kafka 1篇
  • HBase 9篇
  • Spark 41篇
  • Flink 65篇
  • StreamX 5篇
  • Hudi 44篇
  • 离线数仓 13篇
  • 实时数仓
  • 数据库 2篇
  • MySQL 1篇
  • Doris 7篇
  • Artificial Intelligence
  • 机器学习 9篇
  • Alink 5篇
  • 用户画像 25篇
  • 推荐系统 14篇
  • 个人总结 4篇

最新评论

  • 基于协同过滤的电商推荐系统(2):用户对商品的偏好得分

    fzw_lk11: 这里看用户对商品的兴趣后续的目的是啥,如果是进行商品的推荐,感觉购买信息不需要放在这里面。

  • Hive中使用sort_array函数解决collet_list列表排序混乱问题

    Sql_Boy_A_Liang: select province, concat_ws(',',collect_list(city)) as con_city, concat_ws(',',collect_list(rn)) as con_rn from (SELECT province , city , score , row_number() over (partition by province order by score desc) as rn FROM temp) group by province 这个方式更方便

  • 数据湖之Hudi(7):使用docker进行Hudi的快速体验和使用

    减减h: 如果有找不到docker-compose命令的话,sudo env PATH=$PATH /usr/local/bin/docker-compose -version alias sudo='sudo env PATH=$PATH' source ~/.bashrc 可以解决一下

  • MPP数据库之Doris(5):Doris安装部署之Broker部署

    Am最温柔: 有帮助 谢谢~

  • 数据湖之Hudi(7):使用docker进行Hudi的快速体验和使用

    ZWEiKE: windows 上面的docker 可以安装吗?

最新文章

  • 我的创作纪念日
  • Spark(40):Streaming DataFrame 和 Streaming DataSet 中的触发器
  • Spark(39):Streaming DataFrame 和 Streaming DataSet 输出
2023年72篇
2022年241篇
2021年53篇
2019年33篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

电光闪烁

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值

玻璃钢生产厂家玻璃钢房地产雕塑上海特色玻璃钢雕塑摆件兰州卡通玻璃钢雕塑安装银川玻璃钢雕塑采购仿真动物仿铜玻璃钢梅花鹿雕塑玻璃钢龙虾雕塑圣诞节玻璃钢雕塑供应商福建景区玻璃钢雕塑哪家便宜南京镜面玻璃钢雕塑价格行情毕节玻璃钢卡通雕塑泉州玻璃钢异形雕塑平凉抽象人物玻璃钢雕塑设计银行商场美陈展示节日道具广东主题商场美陈研发公司北京主题商场美陈生产企业南通高档玻璃钢花盆宁夏玻璃钢卡通雕塑厂家供应中原财富网创新玻璃钢雕塑厂国外商场春季美陈濠江玻璃钢雕塑厂家园林玻璃钢雕塑口碑好玻璃钢雕塑石膏模水生植物白玻璃钢花盆绍兴抽象玻璃钢雕塑浦口元旦商场美陈胡三太爷玻璃钢雕塑个性化玻璃钢雕塑公司哪家好玻璃钢雕塑零售价格静海玻璃钢玉米雕塑哪里实惠辽宁玻璃钢雕塑生产厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化