CDH Hadoop系列目录:

以阿聪往数据标注组送了有限不行奶茶之后,终于提前一天成功了数码标注工作。

Hadoop实战(3)_虚拟机搭建CDH的全都分布模式

于当下卖数据遭到针对综合视频网站(优酷、爱奇艺、腾讯视频)、短视频应用(美拍、秒拍)、垂直领域视频使(抹茶美妆、花卷)的近视频PGC进行了摸底。阿聪给本人执教了他的相比思路,整体清晰明了。
“好之,产出结果后大约个组内会议吧,可以与大家一同下数据解析的结果。”

Hadoop实战(4)_Hadoop的集群管理暨资源分配

当日午后,阿聪带在准备好数据解析PPT开始往大家共:

Hadoop实战(5)_Hadoop的运维经验

  • 先是页,综合视频网站的数量表格;
  • 次页,垂直视频引用的数目表格;
  • 老三页,搞笑、体育、娱乐视频播放量、占比对照的表;
  • 季页,几雅重要MCN和PGC的播放量,占比对照的报表;
  • 第五页……

Hadoop实战(8)_CDH添加Hive服务及Hive基础

报表、表格、都是数码表格,讲的总人口脑子里掌握、可没有背景知识之观众等可大是烂,一个十页的PPT生生讲了一个时。

Hadoop实战(9)_Hive进阶及UDF开发

哼爱散会了,阿聪主动甩住我问道:
“阿呆先生,我分明很整理的不得了清楚的,可是怎么大家还不曾做明白啊?”

Sqoop语法说明

Sqoop官方学习文档:

http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.6-cdh5.9.0/

Sqoop import是对立于HDFS来讲,即于关系数据库import到HDFS上。

mysql的教包放到sqoop/lib下。

“产品经营强调的是面向用户,站于用户的角度来考虑问题。你及时卖数据报告啊,从剖析层面看是合格的,但是打展现的面来拘禁,可是所有的匪沾边产品。”我道。

案例一:把数量导入到HDFS上

/root/project
mkdir sqoop_prj
cd sqoop_prj/
mkdir DBS
cd DBS/
touch DBS.opt

hadoop fs -mkdir /user/hive/warehouse/DBS
which sqoop

履opt文件,不能够传参,sqoop --options-file aa.opt-m,指定map数,如果抽取的表数据量大,则调大map数。如果-m设置也5,5只线程,则当HDFS上闹5个文件。

把sqoop写及shell脚本的功利,可以招参数。

#!/bin/sh
. /etc/profile

hadoop fs -rmr /user/hive/warehouse/DBS



sqoop import  --connect "jdbc:mysql://cdhmaster:3306/hive"    \
--username root                                                          \
--password 123456                                                        \
-m    1                                                             \
--table  DBS                                                           \
--columns   "DB_ID,DESC,DB_LOCATION_URI,NAME,OWNER_NAME,OWNER_TYPE"         \
--target-dir  "/user/hive/warehouse/DBS"    

#--where "length(DESC)>0"                                               \                               
#--null-string ''

bug,驱动问题

ERROR manager.SqlManager: Error reading from database: java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@3c1a42fa is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on any active streaming result sets before attempting more queries.
java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@3c1a42fa is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on any active streaming result sets before attempting more queries.

充实参数,参考

https://stackoverflow.com/questions/29162447/sqoop-import-issue-with-mysql

https://stackoverflow.com/questions/26375269/sqoop-error-manager-sqlmanager-error-reading-from-database-java-sql-sqlexcept

--driver com.mysql.jdbc.Driver

增参数后底警戒,

WARN sqoop.ConnFactory: Parameter --driver is set to an explicit driver however appropriate connection manager is not being set (via --connection-manager). Sqoop is going to fall back to org.apache.sqoop.manager.GenericJdbcManager. Please specify explicitly which connection manager should be used next time.

bug,sql语法问题,

Error: java.io.IOException: SQLException in nextKeyValue

错过丢关键词列DESC,参考,

https://community.cloudera.com/t5/Data-Ingestion-Integration/sqoop-throws-SQLException-in-nextKeyValue/m-p/42653


案例二:数据写Hive普通表(非分区表)

# mysql
create table test (id int, pdate date);
insert into test(id, pdate) values (1, '2017-11-05');
insert into test(id, pdate) values (2, '2017-11-06');
insert into test(id, pdate) values (3, '2017-11-05');
insert into test(id, pdate) values (4, '2017-11-06');

# hive
drop table if exists test;
create table test(id int, pdate string);

--hive-import,指定要描写副hive表,该参数无value。

--hive-overwrite

--hive-table,test。

“好看的皮囊太多,有趣的神魄缺太少。”

案例三:写Hive分区表,so,salesorder

注意事项:

1、用啊字段做分区?
创办时间,而无是last_modify_time

Q:
用创建时间抽取至hive分区,订单状态变化周期是45龙,订单状态变化后,hive数据如何一同?

hive不支持update,每天抽取近15上之订单到Hive的独家分区里。Hive是做统计分析,通常最关怀是昨之情状。

# cdhmaster
cd ~
mysql -uroot -p123456 < so.sql
ERROR 1046 (3D000) at line 3: No database selected

vi so.sql
use test;

mysql -uroot -p123456 < so.sql

# hive
CREATE TABLE so (
  order_id bigint,
  user_id bigint,
  order_amt double ,
  last_modify_time string
) partitioned by (date string);

Sqoop执行后,注意:

  • 会见以拖欠用户HDFS的home目录下,产生一个以及源表同名的目,如/user/root/so
    一旦sqoop import至hive成功,该目录会自动删掉。
  • 以实行之目下起一个java文件,即opt转化的MR Job代码。
  • sqoop import中,无论hive表是啊列分隔符,均好自行匹配。

Sqoop抽取框架封装:

  • 兴修一个mysql配置表,配置需要抽取的表及信息;
  • Java读取mysql配置表,动态生成opt文件;
  • Java中实践Process类调本地系统命令—sqoop –options-file opt文件;

Sqoop-imp -task 1 “2015-04-21”

Sqoop-imp “2015-04-21”

对于数据解析而言,我们既欲有整体的解析逻辑支撑使数据解析的魂有趣,也只要有方便的表现形式让受众能够再次快、更可靠的晓我们怀念要传送的义,让报告有只好看的皮囊。

Sqoop export

# mysql test
create table so1 as 
select * from so where 1=0;

源头必须是HDFS/Hive,目标关系数据库。

表so1的datelast_modify_time修改为varchar

数码解析的魂魄

数据解析,要带动在目的去推动。

年纪很了就算爱絮叨 ( 泪。
像以每一样章中,我还以强调目的性:要带动在目的去举行产品、去开分析。理工科背景,让我再次偏重通分析过程的逻辑性和促进拆解过程。

因此次的短视频覆盖分析也例,我们设化解一个爸问题,两个支行问题:

  • 我们从生作业对视频内容的掩盖情况是不是完善?
    • 假若全面的话,我们的类目表现如何?
    • 倘若无到家的话,需要补充哪一部分种和哪部分PGC?

环重大问题,我们初步展开题干的拆:

  • 盖情况 –> 类目的覆盖、PGC的幂
  • 类目表现 –> 类目的PGC数量丰富度 和
    内容丰富度;类目内容的播放量、互动情况。
  • PGC表现 –> PGC在不同网站的选定情况,在不同网站的变现情况。

每当是拆除逻辑下,我们率先需建立类似目的覆盖。

自说自话建立平等模仿类目是没用之,参考业界标准是重好的精选。一方面,我们好搜集各家网站于前台展示出底类目信息;另一方面,也可以登记各家网站的创立者账号,将上传内容后翻看各个网站提供被创作者的分类体系。

是因为各家类目级别与名不必然同,所以用更进一步的映照与合。比如,搜狐视频被只有列下的“做饭”类目会被联合进入“生活”类目。创意类视频在不同网站会时有发生异之讳,如“开眼”、“创意”等,需要映射到跟一个名。

搜狐的视频类目

土豆的视频类目

优酷土豆的主创者后台分类

承认了类目结构下,就足以进一步认可PGC名单。

每当依次类目下,可以进一步通过遍历榜单的形式就对脑部优质创作者的盖,通过总体历类目下的近期对完美之翻新列表完成对周活跃创作者的遮盖。

搜狐的排行榜

每当点滴步成功后,我们沾的饶是:类目 vs 视频网站 vs
PGC(节目)的结构化数据(上千长达),如下图:

数据样例

咱得以用本人服务被所盖的PGC与竞品结构化数据比,得到父问题的答案:

  • 假设我们自家服务会覆盖各大平台各目下的TOP20-50底PGC,就可说内容覆盖基础合格了。
  • 比方某些类目没有掩盖,就得更进一步看下这些类目是否用挂,是否能够遮盖。
    • 仍重点面向成人的视频服务,低幼动漫内容是匪需要盖的。
    • 准NBA这样还版权的体育内容,是索要、但是不能够盖到的。(三次之同样,
      一于喝一名誉“腾讯爸爸来钱就是高大!”

于得到父问题的应对后,进一步拆解子问题之答案:

1、覆盖全面的类目,表现如何?

率先,要扣满类目的播报规模,它跟DAU(日活跃用户)相关。一个100W
DAU的出品,去与优酷比播放量是纸上谈兵的,需要归一化到百万圈级的DAU才有所可比性。

从,要拘留类目下典型节目之互表现。由于各家平台播放数注水情况例外,评论这样门槛比较高之竞相方式数据相对可信,从而互动情况能够扶助咱更好的对待这个类目在自我阳台跟另外平台的呈现情况。

2、不全面的气象下,需要上哪些PGC?

综上所述竞品网站的多少,我们得以统计出哪个PGC是以差不多平台还起好表现的。优先引入这样的PGC,一方面能够让咱很快覆盖上内容展开用户口味之证明,另一方面也堪由此与优质PGC的联系,获悉到其它平台的动作。

如果达到,提供的是千篇一律种分析的逻辑线。不同人见面发异的逻辑拆解,但是最终都使满足能够逻辑自洽的功底要求。

Sqoop工具打包

Flow etl 执行有都布置的表抽取。

Flow etl -task 1

Flow etl -task 1 2017-01-01

  • 读取mysql的extract_to_hdfsextract_db_info,根据配置信息生成.opt文件。
  • 通过Java的Process类调Linux命令:sqoop --options-file opt文件

idea打包Flow.jar,'D:/Java/idea/IdeaProjects/Hive_Prj/src/META-INF/MANIFEST.MF' already exists in VFS,删掉文件夹META-INF

db.properties凡访问mysql数据库的配置。

extract_db_info,抽取的表明来的数据库的布。

Flow.jar上传至/root/project/lib

/root/project/bin,创建Flow命令。

配置FLOW_HOME

vi /etc/profile

export FLOW_HOME=/root/project

source /etc/profile

配置db.properties

# FLOW_HOME
mkdir conf

vi db.properties

db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://cdhmaster:3306/test
db.user=root
db.password=123456

配置sqoop option目录sqoop/opts

# FLOW_HOME
mkdir -p sqoop/opts

而如在实施时来日志,需要支出jar时配置log4j。

ERROR manager.SqlManager: Error reading from database: java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@310d117d is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on any active streaming result sets before attempting more queries.
java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@310d117d is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on any active streaming result sets before attempting more queries.

HDFSExtract.java,增加部署--driver com.mysql.jdbc.Driver,重新包装上传。

作业可对应做修改,如sh ./so.sh

# /root/project/sqoop_prj/DBS
vi so.sh

Flow etl -task 1 $yestoday

汝可能还惦记看

数据解析/数据挖掘/机器上

Python数据挖掘与机具上_通信信用风险评估实战(1)——读数据

Python数据挖掘和机具上_通信信用风险评估实战(2)——数据预处理

Python数据挖掘和机具上_通信信用风险评估实战(3)——特征工程

Python数据挖掘与机具上_通信信用风险评估实战(4)——模型训练和调优

爬虫

Python爬虫实战的攀登取链家广州房价_01简约的单页爬虫

Python爬虫实战的攀登取链家广州房价_02将有些爬虫变充分

Python爬虫实战的攀登取链家广州房价_03存储

Python爬虫实战的攀登取链家广州房价_04链家的模仿登录(记录)

搜狗词库爬虫(1):基础爬虫架构和爬取词库分类

搜狗词库爬虫(2):基础爬虫框架的运作流程


微信公众号「数据解析」,分享数据科学家的我修养,既然撞,不如一起成人。

图片 1

多少解析

转载请注明:转载自微信公众号「数据解析」


数解析的皮囊

每当阿聪之这Case上,数据的分析是尚未问题之,但是分析结果的见出了杀问题。我们见面更加拆分为:PPT或文档的集团顺序
和 数据的异图表诠释方式。

PPT或文档的集体各个

根据个人经验,我会推荐新人阅读“麦肯锡写作法”。这等同状作法的底子思路如下图(截取自PPT):

金字塔写作法

  • 首先,说明结论。
  • 从,分述能够佐证结论的几个根本理由。
  • 复,在每个重点理由之下,详述支撑者理由的案例。

以这个Case为条例,可以拆分为如下的布局,然后按深度遍历来组织PPT。

PPT的结构

数量的差图表诠释方式

旁一样值得注意的问题是,人们对于满屏的表和数字是勿灵敏的,可以用颜色标明数字中待给关注有。比如,可以就此红绿颜色标明变化:

因而绿色与红色标志变化程度

除此以外,折线图、饼图等不等之图有不同的运场景。

  • 柱状图 和 条形图

    • 适用场景:适用于比小范围的亚维数据集(每个数据点包括x和y),且只有来一个维度需要比。比如显示一段时间内之多少变化(搞笑类视频在不同月份的播放量表现)或显示各项之间的于情况(不同视频网站的幂情况)
    • 其他:在数额项略多的下(比如电视剧每一样汇的收视情况),条状图(自上而下)更称,因为不同装备的升幅不一致,柱状图或会见并发显示不咸的状态。
    条状图
  • 折线图

    • 适用场景:
      折线图适合二维的生数据集,还切多独二维数据集的比。比如,展示Papi酱
      和 何仙姑夫在同等张频网站的某月之播放情况。

  • 饼图
    • 适用场景:适用于子项目未多之状下,可以来得不同子项目之比例。用户可以再次直观的看到什么子项目是重着重的。
      论,每个网站的视频分类内容占据比较得据此饼图表示。

阿聪若有思之点点头,对自我道:“阿呆先生,我调下。”

重新整理后底PPT,描述如下:

  • 首先页:结论页:类目覆盖全面,部分类目需要续PGC
  • 老二页:子结论页:类目覆盖相对完善
  • 老三页:以饼状图标明了参照的几乎寒视频网站,已经占了视频网站大盘的80%,具有足够买信度。
  • 季页:以柱状图显示了起100个以上pgc的视频分类,并证实这些视频分类我们的服务都早已覆盖了。
  • 第五页:子结论页:部分类目需要续PGC
  • 第六页:以百分比条状图表现了咱服务覆盖的PGC vs
    全局热榜中的PGC,在体育、动漫、创意、鬼畜四单视频分类上,覆盖率不足60%。
  • 第七页:以词云的主意展示我们的用户画像,其特点及鬼畜视频的让众重叠较小。故,鬼畜视频属于不需要盖的视频分类。
  • 第八页:详述需要盖的老三只分类的继承动作:体育及动漫重版权,无法晋升覆盖率;创意类视频可进一步升级覆盖,按照播放量从赛顶小对PGC进行先期级排序。

“这次调动了,就清楚多矣。多积压攒分享、汇报的涉,才会当超机构联系的时还好之允诺本着Challenge,然后Diss
Back。”

自家爱黄旭,推荐他的歌曲Round 4。更好之诺针对Challenge,然后Diss Back


给您的课后功课

翻阅麦肯锡金字塔写作法,相关的百度文库链接如下:
https://wenku.baidu.com/view/b732ed4533687e21af45a97a.html
https://wenku.baidu.com/view/43faa97cce2f0066f4332299.html