商圈库_功能_思路 | 学习笔记

简介: 快速学习商圈库_功能_思路。

开发者学堂课程【2020版大数据实战项目之DMP广告系统(第六阶段)商圈库_功能_思路】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/681/detail/11831


商圈库_功能_思路

 

内容介绍:

一. 数据计算平台:批量计算,流计算

二. 生成功能表的目的和原因

三. 功能的含义

四. 数据的处理方式

五. 高德api的查询

 

一.数据计算平台:批量计算,流计算

1.数据处理的思路呢?

首先整个的数据计算平台大概有两种,第一种是批量计算,第二种是流计算。批量计算是一批一批的计算,而流计算是一个一个的计算。现在这个场景是批量计算。商圈库是要保留所有的这个经纬度对应的商圈信息,也就是最终的商圈库所生成的这个表,应该是这种形式的。

首先有一个 Key,这个 Key,可以对应的是一个 location 信息,或者就定义为 geo。这个geo对应第一个列,第二个列应该对应一个商圈信息,那就是area信息,最终的这个表当中可以只有两个内容,一个是 geo 也就是地理位置,还有一个 area 是商圈的名字。

 

二.生成功能表的目的和原因

接下来要思考的一件事情就是,如果要生成 geo.area 这样的一张表,那为什么要生成这张表?生成这张表的意义何在?

先复制 private val AREA_TABLE_NAME=BUSINESS_AREA’’这个注释,写到类上。

做这个功能最终的结果为:geo,area  ,这样的一张表有两列,那要做这个功能的目的是什么?为什么要做这个功能?

如果不做这个表,在生成标签时,因为这个商圈库是为标签服务提供的,既然它是为标签提供服务的,那么在生成标签的时候要为某一条数据生成一个叫做商圈的标签,所以就要在每一条数据生成标签的时候都要去访问一下高德。

 

三.功能的含义

这个高德的api不是一直能用的,每天是有使用次数的。所以就可能会出现失败的情况。接下来就可以再针对数据来进行一次处理,获取其商圈信息,缓存下来,这个缓存就是商圈表。其实要做这个商圈库,只是把这个商圈的信息挪到本地而已,如果不做这个功能也可以从高德里面拿到,在生成标签时拿到就行。

但是每一次生成标签的时候都去拿,高德会限制不会让一直查,它是有次数限制的,查多了就不让再查了。

这个功能最核心的一点就是按照经纬度的范围,作为 key,商圈信息作为 value,生成一张表。

也就是在这个范围内的所有的经纬度,对应的都是这个商圈。这样就可以提高命中率。从而就不需要每一次都去查高德,查的多了基本上就有整个高德的数据库。所以就可以节省网络资源,速度相对来说也会更快一些,这是这个功能的含义。

 

四.数据的处理方式

这个功能简单介绍一下,有两种数据的处理方式,对于商圈标签生成时数据可能是流式的,也可能是批样的处理。

如果是流式,那么就是来一条数据就去查询一下商圈信息,那如果是批式,就是来一批就去查询商圈信息,并统一进行计算。

最终目的不能每一次都去读取全量的数据生成标签,应该尽量的减少查询高德api的次数。那怎么去做到减少查询高德的 api 的次数呢?这个办法也是比较简单的。先读取 O D S 层的数据,生成每条数据所在的地理位置的范围。其实也就是表中的 key

读取完 O D S 层的数据以后再和商圈库做一次相应的剪辑。假如说这个 key 已经存在了,那么就没有必要再去查询高德的 api 了。就和商圈库做一次差集,如果数据key存在则去掉这条数据,再进行高德 api 的查询。虽然说起来容易,但是其实并没有那么好做。

 

五.高德api的查询

接下来就可以再去读取一张表,这张表就读取已经生成的area,这是已经生成的商圈库,还要再读取出来,那么整条代码就是:

val areaOption=spark. read kuduTable (AREA_TABLE_NAME), (AREA_TABLE_NAME

If(sourceceOption.isEmpty)return这一行代码删除,就有以下两个代码:

val areaOption=spark. read kuduTable (AREA_TABLE_NAME)

Val soureOption=spark. read kuduTable(ODS_TABLE_NAME)

 

这两个代码都是Option,那这个area有可能是不存在的,所以就可以去判断,因为这个代码不分source,所以当这个代码出现

if odsOption.isDefined, 说明ods表已经存在了,并且整个代码:if odsOption.isDefined && areaoption isEmpty,也就是说明不存在area商圈库的这张表,那么这就是一种处理逻辑。

走到这里说明这个ods表是存在的,但是商圈表不存在,就意味着在这个分支中,不需要进行差集。

那么代码 else if(odsoption.isDefined&& areaOption). isDefined  肯定也是存在的,并且这个 option 也是存在的,那么两个东西都存在。其实不要 else 也是一样,都做一个全量的判断,假如说这个 odsoption 是存在的,但是这个 area option 不存在,商圈和ods 两张表都存在。

这里说明 ods 表是存在的,商圈表也存在,这时就说明要先进行差集,去掉已有的数据,再查询高德Api。这就是一个大致的逻辑。这个逻辑还是稍微有一点绕,虽然绕但还是有必要这样去做。这就是最终的结果。

接下来就可以在外部去给定一个结果,这个结果就是一个 result,这个 result 暂且可能为空。它是一个 data frame 的类型,到最后判断 data frame 是否存在,将它Import 一下。到最后数据落地时,判断一下 result,如果它不等于空,就进行相应的落地。走到这里,说明数据至少处理过了,所以可以进行落地。

这就是大致的逻辑,再梳理一遍,梳理一遍以后,给一个 nul l,就可以进行后续的编写了。如下图所示:

1.png

 

当然这个逻辑是比较复杂的,虽然没有标签生成逻辑那么绕,但是稍微有一点复杂,那么这个章节就先暂时告一段落。

相关文章
|
3月前
|
人工智能 JSON API
告别“玩具”:如何构建具备业务闭环能力的AI Agent?(附智能体来了西南总部技术实践路径)
2025年被视为“智能体元年”,LLM正从对话走向行动。本文基于“智能体来了(西南总部)”实践经验,提出“感知-决策-执行”三层架构,详解Agent开发的全栈路径:从Prompt工程、Workflow编排到Python代码集成,助力开发者掌握“Prompt + Python + Workflow”核心技能,推动企业数字化转型。
362 1
|
消息中间件 存储 NoSQL
离线与实时数据开发方案
离线与实时数据开发方案
432 0
|
1月前
|
人工智能 搜索推荐 网络安全
OpenClaw(Clawdbot)阿里云/本地部署图文教程,附大模型Manus/MaxClaw区别解析
“OpenClaw和Manus到底有啥不一样?”“部署时终端报错不断,太折磨人了”——这是2026年OpenClaw爆火后,用户后台留言最集中的两个问题。作为能接管电脑自主干活的AI代理工具,OpenClaw、Manus、MaxClaw因前端形态相似,让不少用户陷入认知混淆;而部署流程中的技术门槛,更是让很多新手望而却步。
1747 5
|
4月前
|
JSON 搜索推荐 API
淘宝商品评论 API 返回数据参考(附解析与实战示例)
淘宝商品评论 API(核心接口如 taobao.item.review.get)是获取商品用户评价数据的官方通道,返回数据以 JSON 格式为主,结构规范且字段丰富,涵盖评论基础信息、用户画像、内容详情、多媒体信息等维度。本文将拆解通用返回结构、核心字段含义、多场景示例及解析注意事项,为开发者提供完整的数据参考指南。
|
2月前
|
运维 JavaScript 前端开发
拿 GLM-5 重构了一个真实项目,跟 Claude Opus 比了比
GLM-5 正式迈向“Agentic Engineering”:实测其Agent在1.2万行Node.js项目中完成Express路由迁移,8文件全改、测试全过,仅需微调2处;Benchmark紧追Claude Opus,开源模型第一。适合后端重构、文档生成与长周期运维,尚不擅前端与模糊需求。
2137 0
|
5月前
|
Java Spring
ThreadPoolTaskScheduler在Main函数与Spring环境下使用示例与讲解
需要注意的是,在实际开发过程中,应根据实际需求设置线程池大小和其他参数,并确保正确处理异常和错误情况。同时也要注意资源管理问题,确保在不再需要时关闭线程池以释放资源。
193 8
|
SQL 分布式计算 Hadoop
hadoop数据查询和分析
【5月更文挑战第9天】
607 1
|
SQL 存储 Apache
Apache Doris 3.0.3 版本正式发布
亲爱的社区小伙伴们,Apache Doris 3.0.3 版本已于 2024 年 12 月 02 日正式发布。该版本进一步提升了系统的性能及稳定性,欢迎大家下载体验。
599 16
|
消息中间件 Java Kafka
Flink-04 Flink Java 3分钟上手 FlinkKafkaConsumer消费Kafka数据 进行计算SingleOutputStreamOperatorDataStreamSource
Flink-04 Flink Java 3分钟上手 FlinkKafkaConsumer消费Kafka数据 进行计算SingleOutputStreamOperatorDataStreamSource
464 1
|
消息中间件 Kafka Apache
部署安装kafka集群
部署安装kafka集群
303 0

热门文章

最新文章