引入
针对用户画像项目来说(产品)必须要支持从多种数据源加载业务数据,构建用户标签。
在之前的标签模型开发中,主要是为了简化开发复杂度,业务数据统一存储到HBase表中。
数据源包含如下几个方面:
存储HDFS文件系统
存储Hive表
存储HBase表
存储MySQL表
存储NoSQL数据库:Redis数据库、MongoDB数据库
存储Elasticsearch索引库
存储Kafka分布式队列
封装数据为RDD:
val offsetRanges = Array(
// topic, partition, inclusive starting offset, exclusive ending offset
OffsetRange(“test”, 0, 0, 100),
OffsetRange(“test”,1, 0, 100),
)
val rdd = KafkaUtils.createRDD[String, String](sparkContext, kafkaParams, offsetRanges, PreferConsistent)
封装数据为DataFrame:
// Subscribe to multiple topics, specifyingexplicit Kafka offsets
val df = spark
.read
.format(“kafka”)
.option(“kafka.bootstrap.servers”, “host1:port1, host2:port2”)
.option(“subscribe”, “topic1, topic2”)
.option(“startingOffsets”, “””{“topic1”:{“0”:23,”1”:-2},”topic2”:{“0”:-2}}”””)
.option(“endingOffsets”, “””{“topic1”:{“0”:50,”1”:-1},”topic2”:{“0”:-1}}”””)
.load()
df.selectExpr(“CAST(key AS STRING)”, “CAST(value AS STRING)”)
.as[(String, String)]
用户数据多种数据源
进入正题,先说明一下我们的用户画像:
1)、面向业务的用户标签及用户画像管理中台
统一规范的标签可视化管理中台,业务人员可自助生产和维护标签,适应营销策略变化。
2)全端采集用户行为数据,整合业务数据等多种数据源,帮