用户画像业务数据调研及ETL(二)持续更新中...
数据同步
原始数据在mysql,将数据先同步到Hive,再同步到Hbase(BulkLoad)·
为什么需要使用Hbase??
特点:数据量比较大
存储HBase:存储海量数据、查询检索
centOS7 启动服务的命令
systemctl ststart mysqld
systemctl stop mysqld
systemctl start mysqld
第一步:准备Mysql数据
将tags_dat.sql上传到linux ,将脚本中的tags_dat 改成tags_dat2。
进入mysql k shell窗口,导入数据。
导入数据前mysql 的设置
设置mysql 导入数据允许的最大包大小
set global max_allowed_packet=1024102432;【只在当前会话生效,退出后失效】
mysql>
mysql> source /opt/tags_dat.sql
Query OK, 0 rows affected (0.00 sec)
同步完成
第二步:将Mysql数据写入Hiv1e
使用Sqoop同步mysql数据到hive/hbase
Apache Sqoop是在Hadoop生态体系和RDBMS(传统的关系型数据库)体系之间传送数据的一种工具。仅仅是一个数据传输/数据同步的工具。
同步数据效率非常高的组件。同步历史数据,同步大量数据,都是用sqoop。
历史数据的第一次同步,可能回花费比较多的时间。
关系型数据库可以将历史数据导出到本地,格式可以自定,分隔符可以自定。
Kettle 与Sqoop 集成,在kettle内调用脚本,脚本内编写sqoop同步语句。
azkaban与Sqoop 集成,在azkaban内调用脚本,脚本内编写sqoop同步语句。
Import:数据导入。RDBMS----->Hadoop
Export:数据导出。Hadoop---->RDBMS
在hive还没有数据表的时候,分两步走,
第一步:复制表结构
/export/servers/sqoop/bin/sqoop create-hive-table
–connect jdbc:mysql://bd001:3306/tags_dat2
–table tbl_logs
–username root
–password 123456
–hive-table tags_dat2.tbl_logs
–fields-terminated-by ‘\t’
–lines-terminated-by ‘\n’
/export/servers/sqoop/bin/sqoop create-hive-table
–connect jdbc:mysql://bd001:3306/tags_dat2
–table tbl_goods
–username root
–password 123456
–hive-table tags_dat2.tbl_goods
–fields-terminated-by ‘\t’
–lines-terminated-by ‘\n’
/export/servers/sqoop/bin/sqoop create-hive-table
–connect jdbc:mysql://bd001:3306/tags_dat2
–table tbl_orders
–username root
–password 123456
–hive-table tags_dat2.tbl_orders
–fields-terminated-by ‘\t’
–lines-terminated-by ‘\n’
/export/servers/sqoop/bin/sqoop create-hive-table
–connect jdbc:mysql://bd001:3306/tags_dat2
–table tbl_users
–username root
–password 123456
–hive-table tags_dat2.tbl_users
–fields-terminated-by ‘\t’
–lines-terminated-by ‘\n’
第二步1:同步mysql数据到Hive
练习使用sqoop将数据同步到hive.
后续使用MR.SPARk编写代码生成Hfile文件需要使用到原始数据
/export/servers/sqoop/bin/sqoop import
–connect jdbc:mysql://bd001:3306/tags_dat2
–username root
–password 123456
–table tbl_logs
–direct
–hive-overwrite
–delete-target-dir
–fields-terminated-by ‘\t’
–lines-terminated-by ‘\n’
–hive-table tags_dat2.tbl_logs
–hive-import
–num-mappers 20
/export/servers/sqoop/bin/sqoop import
–connect jdbc:mysql://bd001:3306/tags_dat2
–username root
–password 123456
–table tbl_goods
–direct
–hive-overwrite
–delete-target-dir
–fields-terminated-by ‘\t’
–lines-terminated-by ‘\n’
–hive-table tags_dat2.tbl_goods
–hive-import
–num-mappers 5
/export/servers/sqoop/bin/sqoop import
–connect jdbc:mysql://bd001:3306/tags_dat2
–username root
–password 123456
–table tbl_orders
–direct
–hive-overwrite
–delete-target-dir
–fields-terminated-by ‘\t’
–lines-terminated-by ‘\n’
–hive-table tags_dat2.tbl_orders
–hive-import
–num-mappers 10
/export/servers/sqoop/bin/sqoop import
–connect jdbc:mysql://bd001:3306/tags_dat2
–username root
–password 123456
–table tbl_users
–direct
–hive-overwrite
–delete-target-dir
–fields-terminated-by ‘\t’
–lines-terminated-by ‘\n’
–hive-table tags_dat2.tbl_users2
–hive-import \
第二步2:使用sqoop直接同步mysql数据到Hbase
创建hbase表
create ‘tbl_goods2’,‘detail’
create ‘tbl_orders2’,‘detail’
create ‘tbl_logs2’, ‘detail’, SPLITS => [‘49394’]
create ‘tbl_users2’,‘detail’
加载MYSQL数据到hbase【使用前提:ROWKEY不能为组合字段】
/export/servers/sqoop/bin/sqoop import
-D sqoop.hbase.add.row.key=true
–connect jdbc:mysql://bd001:3306/tags_dat2
–username root
–password 123456
–table tbl_users
–hbase-create-table
–hbase-table tbl_users2
–column-family detail
–hbase-row-key id
–num-mappers 2
使用hbase自带功能导入数据。
基本导入(采用Put方式加载导入)
/user/hive/warehouse/tags_dat2.db/tbl_logs 指的是HDFS路径
HADOOP_HOME=/export/servers/hadoop
HBASE_HOME=/export/servers/hbase
HADOOP_CLASSPATH=${HBASE_HOME}/bin/hbase mapredcp
????{HBASE_HOME}/conf ${HADOOP_HOME}/bin/yarn jar ${HBASE_HOME}/lib/hbase-server-1.2.0-cdh5.14.0.jar
importtsv
-Dimporttsv.columns=HBASE_ROW_KEY,detail:log_id,detail:remote_ip,detail:site_global_ticket,detail:site_global_session,detail:global_user_id,detail:cookie_text,detail:user_agent,detail:ref_url,detail:loc_url,detail:log_time
tbl_logs2
/user/hive/warehouse/tags_dat2.db/tbl_logs
HFILE导入(采用BulkLoad方式批量加载导入)
生成HFILES文件
HADOOP_HOME=/export/servers/hadoop
HBASE_HOME=/export/servers/hbase
HADOOP_CLASSPATH=${HBASE_HOME}/bin/hbase mapredcp
????{HBASE_HOME}/conf ${HADOOP_HOME}/bin/yarn jar ${HBASE_HOME}/lib/hbase-server-1.2.0-cdh5.14.0.jar
importtsv
-Dimporttsv.bulk.output=hdfs://bd001:8020/datas/output_hfile/tbl_tag_logs
-Dimporttsv.columns=HBASE_ROW_KEY,detail:log_id,detail:remote_ip,detail:site_global_ticket,detail:site_global_session,detail:global_user_id,detail:cookie_text,detail:user_agent,detail:ref_url,detail:loc_url,detail:log_time
tbl_logs2
/user/hive/warehouse/tags_dat2.db/tbl_logs
导入Hfile数据到HBASE
HADOOP_CLASSPATH=${HBASE_HOME}/bin/hbase mapredcp
????{HBASE_HOME}/conf ${HADOOP_HOME}/bin/yarn jar
${HBASE_HOME}/lib/hbase-server-1.2.0-cdh5.14.0.jar
completebulkload
hdfs://bd001:8020/datas/output_hfile/tbl_tag_logs
tbl_logs2
上一篇: Ubuntu14上搭建HIVE-1.1.0-CDH5.9.3
下一篇: NiFi数据流实例一