跳至内容
- 2.具体操作步骤详解
- 连接微品VPN方法步骤
- 双击 Pirtunl.exe,安装VPN并创建桌面快捷方式

- 选中import profile导入 zhang.yanyin.tar 压缩包

- 点击connect 输入 VPN密码 xxxxx 点击 OK 即可

- 第一步:将excel表格转为.csv格式文件(utf-8格式)
- 第二步:将建表语句中分隔符改为逗号(英文),格式改为text文本格式,创建分区表
- 连接hive数据库 xxx:10000 账号密码 xxx

- 输入hive允许动态分区的命令
- set hive.exec.dynamic.partition=true;
- set hive.exec.dynamic.partition.mode=nonstrict;
- 新建分区表 (注意分隔符需要制定为 英文逗号,表数据存储格式需要指定为 textfile)
- CREATE TABLE test_zyy.load_data_test(
- `shop_name` string COMMENT ‘店铺名称’,
- `vip_card_id` string COMMENT ‘vip卡号’,
- `style_code` string COMMENT ‘款号’,
- `kinds` string COMMENT ‘种类’,
- `price` string COMMENT ‘吊牌价’,
- `make_price` string COMMENT ‘实收’,
- `create_time` string COMMENT ‘创建时间’,
- `update_time` string COMMENT ‘更新时间’,
- `bonus` string COMMENT ‘当前积分’,
- `vip_memberorder` string COMMENT ‘vip等级’,
- `vip_phone` string COMMENT ‘vip手机号’,
- `vip_sex` string COMMENT ‘vip性别’,
- `vip_birthday` string COMMENT ‘vip生日’,
- `colors_code` string COMMENT ‘色号’,
- `colors_name` string COMMENT ‘色号名称’,
- `big_class` string COMMENT ‘大类’,
- `small_class` string COMMENT ‘小类’)
- partitioned by (dt string)
- ROW FORMAT SERDE
- ‘org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe’
- WITH SERDEPROPERTIES (
- ‘field.delim’=’,’,
- ‘serialization.format’=’,’)
- STORED AS textfile
- 第三步:将csv文件上传到 xxx 服务器的 /opt/xrl_files/load_data_test 目录下
- ssh连接登录xxx 服务器(可使用xshell等ssh远程连接工具)我用的是MobaXterm

- 将csv文件上传到服务器上

- 第四步:将数据加载到hive数据库表中
- 还是在xxxxx 服务器上,输入beeline访问命令 beeline -u jdbc:hive2://hadoop002:10000/test_zyy -n hive -p

- 键盘输入密码: xxxx 显示登录成功
- 输入将服务器上csv文件的数据写入到hive数据库指定表的命令
- load data local inpath ‘/opt/xrl_files/load_data_test/dw_detail.csv’ into table test_zyy.load_data_test partition(dt =’2022-12-02′);
- 导入成功

- 对应hdfs文件系统中可以看见数据已经成功写入,且存储在 2022-12-02(即今日分区)中

- 在hive数据库中执行select * from test_zyy.load_data_test 操作,发现已可以查询到相应数据

- 第五步:清空暂存csv文件的文件夹
- 在/opt/xrl_files/load_data_test 文件夹下 执行rm -f dw_detail.csv 删除文件操作

- 第六步:配置为定时调度的工作流,让后续dw_detail每日新增的csv文件数据能自动的被写入到hive库表中
- 思路分析:
- 1.后续的dw_detail每日新增数据,需要先人为处理成utf-8格式的csv文件
- 2.后续每日新增的dw_detail的csv文件需要人为上传到指定 服务器的指定目录下
- 3.将数据从本地服务器csv文件中加载到hive库表中的操作可以让电脑定时自动实现,且通过获取当前系统时间的方式,可以在代码语句中动态设置好所属分区
- 详细步骤
- 1.依次点击数据中台上的 数据开发管理 -》 批量计算 -》 项目管理 -》 新建项目 ,本例中新建的项目叫 ‘ read_csv_to_hive ‘

- 2.点击项目的查看按钮(说明:项目是用来管理工作流的文件夹)

- 3.创建一个工作流,配置数据处理逻辑代码和流程,本例中新建的工作流叫做 load_data_test

- 4.根据文档part1中的思路分析,本例中采用shell脚本的方案来实现数据采集的代码化.

- 5.双击shell脚本模块,配置shell脚本
- shell脚本说明
- #!/bin/bash
- set -e ——-检测整个shell脚本中是否有报错,如有,则立刻break(终止执行)脚本
- today=$(date ‘+%Y-%m-%d’) —— 通过shell脚本的语法,动态获取系统日期(shell脚本运行时的’今日’日期)
- ssh -t root@xxx <eeooff ——-以root角色远程访问172.16.31.56服务器(我们存放csv文件的服务器)
- beeline -u jdbc:hive2://hadoop002:10000/test_zyy -n hive -p xxxx ——进入linux环境下的hive cli客户端
- load data local inpath ‘/opt/xrl_files/load_data_test/dw_detail.csv’ into table test_zyy.load_data_test partition(dt=’$today’);
- ————执行加载csv文件数据进入hive指定数据库表的操作
- !exit ————退出linux环境下的hive cli客户端
- exit ————退出shell脚本
- eeooff ————两个eeooff之间包裹的表示在 xxxx 服务器上需要执行的命令
- 6.保存shell脚本,上线工作流,点击立刻运行该工作流

- 7.点击工作流实例,查看工作流运行情况

- 可以看见最近一次执行的记录为成功

- 也可以查看甘特图和日志来监控工作流的运行状况



- 8.http://xxxx:50070/ 进入本例中使用到的hdfs文件系统(hive数据库的数据存储文件系统)

- Browse Directory文件索引框中输入本例中表所在的路径 /warehouse/tablespace/managed/hive/test_zyy.db/load_data_test

- 可以看见存放在服务器上的dw_detail.csv文件已经被上传到了表load_data_test的20222-12-02(今日分区)下

- 在hive远程客户端上查询test_zyy.db.load_data_test的数据,发现已经可以正常查询到数据

- 9.设置工作流的定时运行

- 例如本例中将定时设置为每日23:30运行。

- 那么我们只需要在每日23:30之前,将 dw_detail表本日新增的数据,存储在utf-8格式的 dw_detail.csv文件中,上传到172.16.31.56服务器的/opt/xrl_files/load_data_test目录下。然后工作流就会到点自动运行,将我们上传的csv文件中数据,自动采集到dw_detail表中,且自动给设置为本日日期对应的所属分区中
- 10.最后,第二日时,记得清空172.16.31.56服务器的/opt/xrl_files/load_data_test目录下的文件,再放入新的dw_detail.csv文件即可
- 11.扩展:如果有很多表都需要自动化做增量采集,通过csv或者excel -> hive数据库,那么我们只需要给不同的表设置不同的服务器存储目录即可
- eg: 本例中dw_detail.csv存储在172.16.31.56服务器的/opt/xrl_files/load_data_test目录下
- 那么 表 AA 可以设置为存储在172.16.31.56服务器的/opt/xrl_files/AA 目录下
- 表 BB 可以设置为存储在172.16.31.56服务器的/opt/xrl_files/BB 目录下
- 表 CC 可以设置为存储在172.16.31.56服务器的/opt/xrl_files/CC 目录下
- 重复本例操作,在工作流每日定时调度时间之前,将每个表每日新增的数据,存储为utf-8格式的csv文件,上传到其对应的服务器目录下即可。
- 4. 将csv暂存目录清空的操作尽量手动处理 ,切记不要使用 rm -rf * (这个命令会删除服务器中的所有数据,会导致系统崩溃!)