
Spark实时项目实战
Spark实时项目实战
SmallScorpion
Look at the world with reptiles and write code for the rest of your life;
Illuminate the stars with data and conquer the sea with technology
展开
-
Spark实施项目第三天-日活数据查询接口编写
目的访问路径数据格式创建一个Spring Initializr项目 <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.apache.commons</groupId>原创 2020-05-13 20:34:08 · 277 阅读 · 0 评论 -
Spark实时项目所遇错误,启动SpringBoot收集数据发现数据能读取但全是清一色的404的数据
错误在进行数据收集并发送到kafka时,出现了Status:404 Not Fount 错误解决项目结构问题,SpringBoot启动类需要拿到类外原创 2020-05-08 22:56:30 · 214 阅读 · 0 评论 -
Spark实时项目第一天-采集单节点部署Linux
修改日志目录打包上传到集群中/home/atguigu/spark-log修改发送地址启动接受程序java -jar demo-0.0.1-SNAPSHOT.jar 启动生成数据程序kafka接受到数据后台启动java -jar gmall2020-mock-log-2020-04-01.jar >/dev/null 2>&1 &...原创 2020-05-08 21:22:44 · 243 阅读 · 0 评论 -
Spark实时项目第一天-日志采集|SpringBoot接受日志请求|将数据发送到kafka
文件application.properties:# 外部配置打开# logging.config=./logback.xml#业务日期mock.date=2020-04-01#模拟数据发送模式mock.type=http#http模式下,发送的地址mock.url=http://localhost:8080/applog#启动次数mock.startup.count=10000#设备最大值mock.max.mid=50#会员最大值mock.max.uid=500#商品原创 2020-05-08 20:06:42 · 366 阅读 · 3 评论 -
Spark实时项目第七天-存储orderInfo和orderDetail的ES模板
PUT _template/gmall_order_info_template{ "index_patterns": ["gmall_order_info*"], "settings": { "number_of_shards": 3 }, "aliases" : { "{index}-query": {}, "gmall2020_order_info-q原创 2020-05-19 20:44:48 · 351 阅读 · 0 评论 -
Spark实时项目第八天-DWS层订单明细实付金额分摊(双流合并)
需求主订单的应付金额【origin_total_amount】一般是由所有订单明细的商品单价数量汇总【sku_pricesku_num】组成。但是由于优惠、运费等都是以订单为单位进行计算的,所以减掉优惠、加上运费会得到一个最终实付金额【final_total_amount】。但问题在于如果是以商品进行交易额分析,也要把优惠、运费的效果分摊到购买的每个商品中。如何分摊一般是由订单明细每种商品的消费占总订单的比重进行分摊,比如总价1000元的商品,由分别由600元和400元的A、B两种商品组成, 但原创 2020-05-22 20:15:15 · 776 阅读 · 1 评论 -
Spark实时项目第九天-ADS层实现热门品牌统计
分析数据库的选型创建数据库create database spark_gmall_reportCREATE TABLE `offset` ( `group_id` varchar(200) NOT NULL, `topic` varchar(200) NOT NULL, `partition_id` int(11) NOT NULL, `topic_offset` bigint(20) DEFAULT NULL, PRIMARY KEY (`group_id`,`topic原创 2020-05-22 22:20:49 · 427 阅读 · 0 评论 -
Spark实施项目第七天-创建dw层订单明细表且与sku、spu、商标、类别进行联立
HBase中对四个维表进行建表create table gmall_base_category3 ( id varchar primary key ,info.name varchar, info.category2_id varchar )SALT_BUCKETS = 3create table gmall_base_trademark ( id varchar primary key ,info.tm_name varchar)SALT_BUCKETS = 3create table gm原创 2020-05-19 19:25:44 · 518 阅读 · 0 评论 -
Spark实时项目第六天-订单表与用户维度表联立
HBase建表create table gmall_user_info ( id varchar primary key , info.user_level varchar, info.birthday varchar,info.gender varchar,info.age_group varchar,info.gender_name varchar)SALT_BUCKETS = 3UserInfo在scala\com\atguigu\gmall\realtime\bean\UserInfo.原创 2020-05-19 17:47:36 · 720 阅读 · 0 评论 -
Spark实时项目第六天-订单表字段与地区表联立
修改OrderInfoAppimport com.alibaba.fastjson.{JSON, JSONObject}import com.atguigu.gmall.realtime.bean.{OrderInfo, UserState}import com.atguigu.gmall.realtime.utils.{MyKafkaUtil, OffsetManagerUtil, PhoenixUtil}import org.apache.hadoop.conf.Configurationim原创 2020-05-18 17:41:20 · 227 阅读 · 0 评论 -
Spark实时项目第六天-维度数据业务流程之监控维表数据并用maxwell-bootstrap初始化数据(全量导入省份表)
处理维度数据合并的策略维度数据和状态数据非常像,但也有不同之处:共同点:长期保存维护可修改使用k-v方式查询不同点:数据变更的时机不同状态数据往往因为事实数据的新增变化而变更维度数据只会受到业务数据库中的变化而变更根据共同点,维度数据也是非常适合使用hbase存储的,稍有不同的是维度数据必须启动单独的实时计算来监控维度表变化来更新实时数据。实时处理流程HBase建表create table gmall_province_info ( id varchar pri原创 2020-05-17 20:32:07 · 1085 阅读 · 5 评论 -
Spark实时项目第五天-从cannal分流到kafka到实时计算判断首单并处理同批次订单首单判定冲突(HBase)
增加依赖<dependency> <groupId>org.apache.phoenix</groupId> <artifactId>phoenix-spark</artifactId> <version>4.14.2-HBase-1.3</version></dependency><dependency> <groupId>org.apache.s原创 2020-05-17 09:07:02 · 304 阅读 · 0 评论 -
Spark实时项目第五天-需求分析|HBase和Phoenix配置|SQuirreL得简单使用|表得创建
需求分析:按地区(用户性别、用户年龄段)统计当日新增付费用户首单平均消费每笔订单都要判断是否是该用户的首单。无论是地区名称、用户性别、用户年龄,订单表中都没有这些字段。但是可以通过外键的形式关联其他表得到这些值。处理判断首单业务的策略判断是否首单的要点,在于该用户之前是否参与过消费(下单)。那么如何知道用户之前是否参与过消费,如果临时从所有消费记录中查询,是非常不现实的。那么只有将“用户是否消费过”这个状态进行保存并长期维护起来。在有需要的时候通过用户id进行关联查询。在实际生产中,这种用户状原创 2020-05-16 23:33:36 · 268 阅读 · 0 评论 -
Spark实时项目第五天-Maxwell得安装及Maxwell版本的ODS层分流操作
Maxwellmaxwell 是由美国zendesk开源,用java编写的Mysql实时抓取软件。 其抓取的原理也是基于binlog。工具对比Maxwell 没有 Canal那种server+client模式,只有一个server把数据发送到消息队列或redis。Maxwell 有一个亮点功能,就是Canal只能抓取最新数据,对已存在的历史数据没有办法处理。而Maxwell有一个bootstrap功能,可以直接引导出完整的历史数据用于初始化,非常好用。Maxwell不能直接支持HA,但是它支持断原创 2020-05-16 22:02:31 · 476 阅读 · 0 评论 -
Spark实时项目第四天-ODS层实时计算分流(根据表分流到不同的主题中去)
编写代码在原来得spark-gmall-dw-realtime项目中继续添加代码增加MyKafkaSinkUtil在scala\com\atguigu\gmall\realtime\utils\MyKafkaSinkUtil.scalaimport java.util.Propertiesimport org.apache.kafka.clients.producer.{KafkaProducer, ProducerRecord}object MyKafkaSinkUtil { pr原创 2020-05-16 21:22:15 · 1105 阅读 · 0 评论 -
Spark实时项目第四天-MySQL的准备及Canal的安装测试
采集数据框架流程Canal 使用场景阿里otter中间件的一部分:otter是阿里用于进行异地数据库之间的同步框架,canal是其中一部分。更新缓存抓取业务数据新增变化表,用于制作拉链表。抓取业务表的新增变化数据,用于制作实时统计。canal工作原理Master主库将改变记录,写到二进制日志(binary log)中Slave从库向mysql master发送dump协议,将master主库的binary log events拷贝到它的中继日志(relay log);Slave原创 2020-05-15 15:06:31 · 302 阅读 · 0 评论 -
Spark实时项目第三天-精准一次消费|手动提交偏移
精确一次消费问题产生解决方案手动提交偏移量用Redis保存偏移量原因编写OffsetManagerUtil在scala\com\atguigu\gmall\realtime\utils\OffsetManagerUtilimport java.utilimport org.apache.kafka.common.TopicPartitionimport org.apache.spark.streaming.kafka010.OffsetRangeimport redis.cl原创 2020-05-13 17:22:37 · 1274 阅读 · 0 评论 -
Spark实时项目第二天-代码开发之消费kafka|Redis去重|建立模板将数据保存到ES中
创建Maven项目并导入POM<properties> <spark.version>2.4.0</spark.version> <scala.version>2.11.8</scala.version> <kafka.version>1.0.0</kafka.version> <project.build.sourceEncoding>UTF-8原创 2020-05-12 22:10:13 · 637 阅读 · 0 评论