Hbase数据导入和实现 Web 日志场景数据处理

目标

  • 1.将 CSV 文件导入到 HBase 的 access_log 表内。
  • 2.请根据以上提示,利用过滤器检索出所有访问记录中,来自加拿大(即 country 字段的值是 ca)的记录有多少条。
  • 3.将查询结果中的记录数量写入到 /home/hadoop/log_analysis_result 文件中。

知识点

  • HBase 过滤器的用法
  • HBase 导入数据的方式
  • HBase 表操作
  • Bash 输出重定向

CSV内容

在这里插入图片描述

提示

1.Hbase数据导入语句

$ hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator="分隔符" -Dimporttsv.columns=HBASE_ROW_KEY,列族名称:列名,列族名称:列名,列族名称:列名,列族名称:列名,列族名称:列名,列族名称:列名 表明 待导入文件的 HDFS 路径

2.可供参考的 HBase 中的 access_log 表模式为:

  • 第 1 列:对应于 HBASE_ROW_KEY 。
  • 第 2 至 3 列:对应于列族 cf1 ,对应的列名分别是 date 和 id 。
  • 第 4 至 7 列:对应于列族 cf2 ,对应的列名分别是 url 、pre_url 、ip 、country 。
  • HBase 中创建表的命令为 create ‘表名’, ‘列族名称’, ‘列族名称’。

3.通过 SingleColumnValueFilter 来对单个列的值进行限定,在 HBase Shell 中的使用方法如下:

scan '表名', FILTER=>"SingleColumnValueFilter('列族名称','列名',判断条件,'binary:匹配值')"

参考代码

$ su hadoop
$ cd ~
$ wget http://labfile.oss.aliyuncs.com/courses/567/log.csv
$ hdfs namenode -format(格式化语句,第一次才需要)
$ start-dfs.sh
$ start-yarn.sh
$ hdfs dfs -mkdir -p /user/hadoop/(之前建立过,这次不需要)
$ hdfs dfs -put /home/hadoop/log.csv /user/hadoop/log.csv

$ start-hbase.sh
$ hbase shell
hbase(main):001:0> create 'access_log', 'cf1', 'cf2'

打开新的终端

$ su -l hadoop
$ hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator="," -Dimporttsv.columns=HBASE_ROW_KEY,cf1:date,cf1:id,cf2:url,cf2:pre_url,cf2:ip,cf2:country access_log /user/hadoop/log.csv

切换到 hbase shell 中执行:

$ hbase shell
hbase(main):002:0> scan 'access_log', FILTER=>"SingleColumnValueFilter('cf2','country',=,'binary:ca')"
hbase(main):003:0> exit

在终端执行:

$ echo 1037 > /home/hadoop/log_analysis_result

log_analysis_result的结果是1037

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值