欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用户画像业务数据调研及ETL(二)持续更新中...

程序员文章站 2022-03-08 14:32:48
...

数据同步
原始数据在mysql,将数据先同步到Hive,再同步到Hbase(BulkLoad)·
为什么需要使用Hbase??
特点:数据量比较大
存储HBase:存储海量数据、查询检索
用户画像业务数据调研及ETL(二)持续更新中...
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
用户画像业务数据调研及ETL(二)持续更新中...
使用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
用户画像业务数据调研及ETL(二)持续更新中...

/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
用户画像业务数据调研及ETL(二)持续更新中...

/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

用户画像业务数据调研及ETL(二)持续更新中...
/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 \

用户画像业务数据调研及ETL(二)持续更新中...

第二步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
用户画像业务数据调研及ETL(二)持续更新中...

导入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
用户画像业务数据调研及ETL(二)持续更新中...

相关标签: 大数据