• 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 * (这个命令会删除服务器中的所有数据,会导致系统崩溃!)

作者 admin

张宴银,大数据开发工程师

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注