熟悉常用的HBase操作,编写MapReduce作业
1. 以下关系型数据库中的表和数据,要求将其转换为适合于HBase存储的表并插入数据:
学生表(Student)
| 学号(S_No) | 姓名(S_Name) | 性别(S_Sex) | 年龄(S_Age) |
|---|---|---|---|
| 2015001 | Zhangsan | male | 23 |
| 2015002 | Marry | female | 22 |
| 2015003 | Lisi | male | 24 |
命令如下
ssh localhost
start-dfs.sh
start-hbase.sh
hbase shell
create 'Student', 'S_No', 'S_Name', 'S_Sex', 'S_Age'
put 'Student', '001', 'S_No', '2015001'
put 'Student', '001', 'S_Name', 'Zhangsan'
put 'Student', '001', 'S_Sex', 'male'
put 'Student', '001', 'S_Age', '23'
put 'Student', '002', 'S_No', '2015002'
put 'Student', '002', 'S_Name', 'Marry'
put 'Student', '002', 'S_Sex', 'female'
put 'Student', '002', 'S_Age', '22'
put 'Student', '003', 'S_No', '2015003'
put 'Student', '003', 'S_Name', 'Lisi'
put 'Student', '003', 'S_Sex', 'male'
put 'Student', '003', 'S_Age', '24'
2. 用Hadoop提供的HBase Shell命令完成相同任务:
- 列出HBase所有的表的相关信息;list
- 在终端打印出学生表的所有记录数据;
- 向学生表添加课程列族;
- 向课程列族添加数学列并登记成绩为85;
- 删除课程列;
- 统计表的行数;count 's1'
- 清空指定的表的所有记录数据;truncate 's1'
list
scan 'Student'
alter 'Student', NAME=>'S_Course'
put 'Student', '001', 'S_Course:math', '85'
alter 'Student', {NAME=>'S_Course', METHOD=>'delete'}
count 'Student'
truncate 'Student'
3. 用Python编写WordCount程序任务
| 程序 | WordCount |
|---|---|
| 输入 | 一个包含大量单词的文本文件 |
| 输出 | 文件中每个单词及其出现次数(频数),并按照单词字母顺序排序,每个单词和其频数占一行,单词和频数之间有间隔 |
- 编写map函数,reduce函数
- 将其权限作出相应修改
- 本机上测试运行代码
- 放到HDFS上运行
- 下载并上传文件到hdfs上
- 用Hadoop Streaming命令提交任务
这里所有的操作均在用户目录下 ~
首先把hdfs中input里面的txt文件清除,然后放入需要分析的文本文件,命令如下
hdfs dfs -rm input/*.txt
hdfs dfs -put ~/lyric.txt input/
在目录下创建mapper.py
内容如下:
import sys
for line in sys.stdin:
line = line.strip()
words = line.split()
for word in words:
print('%s\t%s' % (word, 1))
在目录下创建reducer.py
内容如下:
from operator import itemgetter
import sys
current_word = None
current_count = 0
word = None
for line in sys.stdin:
line = line.strip()
word, count = line.split('\t', 1)
try:
count = int(count)
except ValueError:
continue
if current_word == word:
current_count += count
else:
if current_word:
print '%s\t%s' % (current_word, current_count)
current_count = count
current_word = word
if current_word == word:
print '%s\t%s' % (current_word, current_count)
接下来配置.bashrc文件,将streaming的路径配置到环境变量中
export HADOOP_HOME=/usr/local/hadoop
export STREAM=$HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-*.jar
配置好后在目录下创建run.sh
内容如下:
hadoop jar $STREAM \
-D stream.non.zero.exit.is.failure=false \
-file /home/hadoop/mapper.py \
-mapper 'python /home/hadoop/mapper.py' \
-file /home/hadoop/reducer.py \
-reducer 'python /home/hadoop/reducer.py' \
-input /user/hadoop/input/*.txt \
-output /user/hadoop/wcoutput
在配置mapper和reducer中,加入了python,不然运行出错。
还有上面的命令中加入-D stream.non.zero.exit.is.failure=false 是因为运行时抛出异常
java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed wi
这个异常是streaming默认的情况下,mapper和reducer的返回值不是0,被认为异常任务,将被再次执行,默认尝试4次都不是0,整个job都将失败。
现在在本目录下写入命令source run.sh即可运行,之后在运行命令
hdfs dfs -cat wcoutput/*就可看见执行后代码后的结果
参考链接
https://blog.csdn.net/deqingguo/article/details/7448427
https://blog.csdn.net/liang0000zai/article/details/50547177
熟悉常用的HBase操作,编写MapReduce作业的更多相关文章
- 熟悉常用的HBase操作
1. 以下关系型数据库中的表和数据,要求将其转换为适合于HBase存储的表并插入数据: 学生表(Student)(不包括最后一列) 学号(S_No) 姓名(S_Name) 性别(S_Sex) 年龄(S ...
- 实验3- 熟悉常用的 HBase 操作
石家庄铁道大学信息科学与技术学院 实验报告 2018年----2019年 第一学期 题目: 熟悉常用的 HBase ...
- Tutorial 01_熟悉常用的Linux操作和Hadoop操作
(一)熟悉常用的Linux 操作cd 命令:切换目录 (1) 切换到目录“/usr/local” (2) 切换到当前目录的上一级目录 (3) 切换到当前登录Linux 系统的用户的自己的主文件夹 ...
- 课程作业——熟悉常用的Linux操作
cd命令:切换目录 (1) 切换到目录 /usr/local cd /usr/local (2) 去到目前的上层目录 cd .. (3) 回到自己的主文件夹 cd ~ ls命令:查看文件与目录 (4) ...
- Tutorial 02_熟悉常用的HDFS操作
Shell命令实现: (1)向HDFS 中上传任意文本文件,如果指定的文件在HDFS 中已经存在,则由用户来指定是追加到原有文件末尾还是覆盖原有的文件: (2) 从HDFS 中下载指定文件,如果本地文 ...
- 熟悉常用的HDFS操作
编程实现以下指定功能,并利用Hadoop提供的Shell命令完成相同任务: 在本地Linux文件系统的“/home/hadoop/”目录下创建一个文件txt,里面可以随意输入一些单词. 在本地查看文件 ...
- 第三章 熟悉常用的HDFS操作
一.Hadoop提供的Shell命令完成相同任务: 1.在本地Linux文件系统的“/home/hadoop/”目录下创建一个文件txt,里面可以随意输入一些单词. mkdir hadoop 在本地查 ...
- 熟悉常用的Linux操作
请按要求上机实践如下linux基本命令. cd命令:切换目录 (1)切换到目录 /usr/local cd /usr/local (2)去到目前的上层目录 cd .. (3)回到自己的主文件夹 ...
- MapReduce编程中常用的字符操作
本文主要用于记录自己在编写mapreduce程序时常用的一些方法,后期会不断更新,用于自己复习和给新手一些帮助. 字符串操作 String str = " 12345"; // 字 ...
随机推荐
- TCSL:遇到网络正常,但是添加网口打印机总是失效的问题。
1. 环境 这家店要换成TCSL餐饮系统,但是店主希望在换系统时候,保持原来系统正常运转.所以,一开始踩点和实施都是小心翼翼~~ 不过,还是遇到问题,没法打印,如果开启TCSL打印服务,就会和原来的餐 ...
- 线程(Thread、ThreadPool)
多线程的操作,推荐使用线程池线程而非新建线程.因为就算只是单纯的新建一个线程,这个线程什么事情也不做,都大约需要1M的内存空间来存储执行上下文数据结构,并且线程的创建与回收也需要消耗资源,耗费时间.而 ...
- angular-ui-bootstrap typeahead 智能提示 自动补全 获取焦点不触发问题的解决
项目中有一处使用了angular-ui-bootstrap中的typeahead来实现输入框智能提示语自动化补全的功能,存在一个bug, 即输入文字后,当再次点击文本框,其获取焦点后并不会触发智能提示 ...
- SSIS - 7.发邮件任务
发邮件任务在SSIS中使用特别多,当包执行失败或者有报错的时候可以用发邮件任务给管理员发邮件通知. 一.SMTP连接管理器 SMTP连接管理器是发邮件任务用来连接SMTP(Simple Mail Tr ...
- 急急如律令!火速搭建一个C#即时通信系统!(附源码分享——高度可移植!)
(2016年3月更:由于后来了解到GGTalk开源即时通讯系统,因此直接采用了该资源用于项目开发,在此对作者表示由衷的感谢!) —————————————————————————————————— 人 ...
- [Swift]LeetCode271. 加码解码字符串 $ Encode and Decode Strings
Design an algorithm to encode a list of strings to a string. The encoded string is then sent over th ...
- [Swift]LeetCode963. 最小面积矩形 II | Minimum Area Rectangle II
Given a set of points in the xy-plane, determine the minimum area of any rectangle formed from these ...
- [Swift]LeetCode971.翻转二叉树以匹配先序遍历 | Flip Binary Tree To Match Preorder Traversal
Given a binary tree with N nodes, each node has a different value from {1, ..., N}. A node in this b ...
- FastDFS 学习笔记
一.理论基础 FastDFS比较适合以中小文件为载体的在线服务,比如跟NGINX(APACHE)配合搭建图片服务器. 分布式文件系统FastDFS FastDFS是纯C语言实现,只支持Linux. ...
- Java数据结构和算法 - TreeMap源码理解红黑树
前言 本篇将结合JDK1.6的TreeMap源码,来一起探索红-黑树的奥秘.红黑树是解决二叉搜索树的非平衡问题. 当插入(或者删除)一个新节点时,为了使树保持平衡,必须遵循一定的规则,这个规则就是红- ...