目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

大数据全系列 教程

1869个小节阅读:467k

收藏
全部开发者教程

408考研

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(226)
赞(0)

歌曲播放日志解析编码

  • 创建类com.itbaizhan.scala.musicproject.ods.ProduceClientLog.scala

  • 判断程序传入的参数,未传入参数直接结束程序,并给予提示信息;符合要求将参数赋值

  • 根据ConfigUtils.LOCAL_RUN值的不同使用不同的方式构建SparkSession对象,然后构建SparkContext对象sc,调用clientLogInfos : RDD[String]=sc.textFile(path)方法读取演示文件,本地运行和集群运行path路径不同。

  • 首先对clientLogInfos使用map算子将它的元素分解为数组arr,然后数组元素为6(arr.length==6)的日志记录,最后将RDD元素转化为二元组(arr(2),arr(3))后赋值给tableNameAndInfos:RDD[(String,String)]

    日志格式如下,每行日志信息被&拆分为了6部分。

1916900543&99702&MINIK_CLIENT_SONG_PLAY_OPERATE_REQ&{"songid": "LX_M012893", "mid": 99702, "optrate_type": 1, "uid": 49915635, "consume_type": 0, "play_time": 201, "dur_time": 272, "session_id": 14089, "songname": "那女孩对我说", "pkg_id": 4, "order_id": "InsertCoin_43347"}&3.0.1.15&2.4.4.30

  • 调用tableNameAndInfos.map(tp=>{...})keyMINIK_CLIENT_SONG_PLAY_OPERATE_REQ的value从json中解析出来后形成如下格式:

(key,songid+"\t"+mid+"\t"+optrateType+"\t"+uid+"\t"+consumeType+"\t"+durTime+"\t"+sessionId+"\t"+songName+"\t"+pkgId+"\t"+orderId)

key为其它值的保持原内容不变,并将tableNameAndInfos中的数据保存在HDFS文件系统的hdfs://mycluster/logdata/all_client_tables/${logDate}下,使用key作为文件名称。

  • 切换hive操作使用的命名空间baizhan_music
  • 在Hive中创建 ODS层的 TO_CLIENT_SONG_PLAY_OPERATE_REQ_D表(如果不存在)
  • '${hdfsclientlogpath}/all_client_tables/${logDate}/MINIK_CLIENT_SONG_PLAY_OPERATE_REQ'load到表TO_CLIENT_SONG_PLAY_OPERATE_REQ_D中(注意分区使用${logDate})

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2