项目:APP热点标签分析

一、项目背景与目标
项目背景:
在移动APP满天飞的当下,如何做好APP的营销和推广至关重要,而该环节的关键在于能对APP做大众喜欢的关键字描述,从而提高APP的搜索命中率和下载率。找到热度标签,蹭热度标签,往往可以提高相应APP的下载量和使用量。
项目目标:
用时不超过一周,主要是通过查看资料,百度搜索等方式搞定,加强实战应用开发能力和自学能力。最终达到对于常用的小模块开发,可以在1-5天内迅速解决战斗,并形成自身的类库积累。掌握数据仓库开发流程、核心代码开发,达到独立开发中小型数据仓库项目的能力。

二、需求分析
给定一批app名称及其描述信息,共52.9万条数据(爬虫爬取App Store的数据)
其内容结构为,共包含6个字段,分别为(appId,app名称, 一级分类,二级分类,三级分类,Tags描述信息),但并不一定完全规整,视实际情况可能左对齐包括四个或五个或六个字段。
通过大数据开发之hive数据仓库命令行形式,完成数据加载、udf/udaf/udtf函数、统计分析的任务,并演示项目效果即可。

三、主要思路及难点
主要思路:
通过hive命令将数据加到数据仓库中
使用hql+udf/udaf/udtf完成统计分析
将统计分析结果插入到hive中自建的新表中
主要难点:
数据仓库的目录结构和开发规范
hive及HiveSQl常用命令
系统函数+udf/udaf/udtf灵活使用
hive常见问题的解决

项目流程:
思路分析:
1爬虫爬取App Store的数据(数据准备工作)
2.1创建对应的数据表1(create)
2.2加载数据(deal)
3.1创建一个表2保存”标签和标签量“
3.2对表1进行数据处理,产生数据保存到表2中(deal)

开发过程:
技术点:shell脚本、hive SQL
开发规范:
1、配置项config
touch set_env.sh vi set_env.sh

#! /bin/bash   --告知这是一个shell脚本
HIVE='/usr/bin/hive'    --创建HIVE变量,hive可执行文件的位置
2、存放创建表的脚本create(在linux窗口执行hive命令:hive  -e  ”(hive命令)“)
touch app_tag_meta_info.sh		  chmod 755 app_tag_meta_info.sh 		
vi app_tag_meta_info.sh 
#! /bin/bash

source ../config/set_env.sh       #等价于HIVE='/usr/bin/hive'

db="job_002"
table_name="app_tag_meta_info"
#引用某个变量使用$
$HIVE -e "
   use $db;
  create external table $table_name(
    id string,
    name string,
    first_classify string,
    second_classify string,
    third_classify string,
    tags string
  )
partitioned by (dt string comment 'update date')
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'
STORED AS  textfile;
"


3、存放udf、数据处理的jar包udf
4、存放对数据处理逻辑的脚本deal
	加载数据:touch produce_app_tag_meta_info.sh
	 chmod 755 produce_app_tag_meta_info.sh
	 vi produce_app_tag_meta_info.sh
#! /bin/bash

source ../config/set_env.sh

updateDT=$1
db="job_002"
table_name="app_tag_meta_info"
jar_path=""
class_path=""
data_source_path="app_abstract_info.txt"

$HIVE -e "
  use $db;
  load data local inpath '$data_source_path'
   overwrite into table $table_name partition(dt='$updateDT')
  ;
"



$1指的时运行shell脚本时传入的第一个参数,$0代表所有的参数
(create)vi hot_tag_rank.sh

#! /bin/bash

source ../config/set_env.sh

db="job_002"
table_name="hot_tag_rank"

$HIVE -e "
   use $db;
   create table $table_name(
     tag string,
     freq int
   ) 
partitioned by (dt string comment 'update date')
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'
STORED AS  textfile;
"


(deal)vi produce_hot_tag_rank.sh

在这里插入代码片#! /bin/bash

source ../config/set_env.sh

updateDT=$1
db="job_002"
table_name="hot_tag_rank"
jar_path=""
class_path=""

$HIVE -e "
  use $db;
  set hive.execution.engine=tez;
  insert overwrite table hot_tag_rank partition(dt='$updateDT')
select tag,count(1) as freq from app_tag_meta_info lateral view explode(split(tags,',')) tag_table as tag where tag!='' and tag!='-' and dt='$updateDT' group by tag order by freq desc
"

脚本串联:
需要使用一个脚本来串联所有执行过程。
vi a_main.sh

#! /bin/bash

#得到当前日期
currentDT=`date +%Y%m%d`
echo "currentDT="$currentDT

#将文本文件数据加载到app_tag_meta_info表中
echo "start load data to table process"
sh produce_app_tag_meta_info.sh $currentDT
echo "end"

#生成统计排序的热度标签数据
echo "start insert tag rank data"
sh produce_hot_tag_rank_rc.sh $currentDT
echo "end"

echo "all done!"


``反引号的意思是将命令执行,将结果当作输入字符串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值