用户画像第四章(企业级360°用户画像_标签开发_统计型标签_年龄段标签开发)

统计型标签
统计型标签是需要使用聚合函数计算后得到的标签,比如最近3个月的退单率,用户最常用的支付方式等等.
年龄段标签开发:
1、创建sparkSQL实例没用于读取hbase mysql数据
2、链接mysql数据库
url: String, table: String, properties: Properties
3、读取四级标签数据

inType=HBase##zkHosts=192.168.10.20##zkPort=2181##hbaseTable=tbl_users##family=detail##selectFields=id,birthday

使用## 切分再使用=切分
在这里插入图片描述
将map 转换成样HBaseMeta例类
var hbaseMeta: HBaseMeta = getHBaseMeta(fourMap)
4读取mysql数据库中的的五级标签
封装成 TagRule样例类
获取id 和 rule
封装样列类
5根据mysql数据中的四级标签的规则 读取hbase 数据
若使用mysql客户端读取数据效率较慢,将hbase 作为数据源,读取效率较快。
在这里插入图片描述
6、使用五级标签与hbase数据进行匹配获得标签
根据五级标签数据和hbase数据进行标签匹配 的到最终的标签
编写udf函数 。
在这里插入图片描述
7、解决数据覆盖的问题【职业标签会覆盖前面的所有标签】
读取test,追加标签后覆盖写入
读取test内的历史标签数据,追加新计算出来的标签到历史数据,最后覆盖写入hbase
A 读取test内的历史标签数据【不是职业标签,是其他的,已经计算出来的标签】
B 追加新计算出来的标签到历史数据
新表join新表,条件是两个表的userId相等
在这里插入图片描述
C 最后覆盖写入hbase
8、将最终数据写入hbase

代码:

package cn.itcast.czxy.BD18.Job

import java.util.Properties
import cn.itcast.czxy.BD18.Job.bean.{
   HBaseMeta, TagRule}
import org.apache.spark.sql.{
   DataFrame, Dataset, Row, SparkSession}

object birthdayTag {
   
  def main(args: Array[String]): Unit = {
   
    //1、创建sparkSQL实例没用于读取hbase    mysql数据
    val spark: SparkSession = SparkSession.builder().appName("birthdayTag").master("local[*]").getOrCreate()

    //2、链接mysql数据库
    //url: String, table: String, properties: Properties
    var url="jdbc:mysql://bd001:3306/tags_new?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&user=root&password=123456"
    var table="tbl_basic_tag"
    var properties=new Properties
    val mysqlConn: DataFrame = spark.read.jdbc(url,table,properties)

    //隐式转换
    import spark.implicits._
    import scala.collection.JavaConverters._
    import org.apache.spark.sql.functions._
    //3、读取四级标签数据
    //inType=HBase##zkHosts=192.168.10.20##zkPort=2181##hbaseTable=tbl_users##family=detail##selectFields=id,birthday
    val fourDS: Dataset
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值