zoukankan      html  css  js  c++  java
  • 熟悉常用的HBase操作,编写MapReduce作业

    1. 以下关系型数据库中的表和数据,要求将其转换为适合于HBase存储的表并插入数据:

    学生表(Student)(不包括最后一列)

    学号(S_No)

    姓名(S_Name)

    性别(S_Sex)

    年龄(S_Age)

    课程(course)

    2015001

    Zhangsan

    male

    23

     

    2015003

    Mary

    female

    22

     

    2015003

    Lisi

    male

    24

    数学(Math)85

    create 'Student','sname','ssex','sage'
    put 'Student','2015001','sname','Zhangsan'
    put 'Student','2015001','ssex','male'
    
    put 'Student','2015001','sage','23'
    
    put 'Student','2015002','sname','Mary'
    
    put 'Student','2015002','ssex','female'
    
    put 'Student','2015002','sage','22'
    
    put 'Student','2015003','sname','Lisi'
    
    put 'Student','2015003','ssex','male'
    
    put 'Student','2015003','sage','24

    2. 用Hadoop提供的HBase Shell命令完成相同任务:

    • 列出HBase所有的表的相关信息;list
    • 在终端打印出学生表的所有记录数据;
    • 向学生表添加课程列族;
    • 向课程列族添加数学列并登记成绩为85;
    • 删除课程列;
    • 统计表的行数;count 's1'
    • 清空指定的表的所有记录数据;truncate 's1'
    scan 'Student'
    alter 'Student','NAME'=>'course'
    put 'Student','3','course:Math','85'
    dorp 'Student','course'
    count 's1'
    truncate 's1'

    3. 用Python编写WordCount程序任务

    程序

    WordCount

    输入

    一个包含大量单词的文本文件

    输出

    文件中每个单词及其出现次数(频数),并按照单词字母顺序排序,每个单词和其频数占一行,单词和频数之间有间隔

    1. 编写map函数,reduce函数
    2. 将其权限作出相应修改
    3. 本机上测试运行代码
    4. 放到HDFS上运行
    5. 下载并上传文件到hdfs上
    6. 用Hadoop Streaming命令提交任务

    创造mapper.py文件

    cd /home/hadoop/wc
    sudo gedit mapper.py

    map函数

    #!/usr/bin/env python
    import sys
    for i in stdin:
        i = i.strip()
        words = i.split()
        for word in words:
        print '%s	%s' % (word,1)

    reduce函数

    #!/usr/bin/env python
    from operator import itemgetter
    import sys
    
    current_word = None
    current_count = 0
    word = None
    
    for i in stdin:
        i = i.strip()
        word, count = i.split('	',1)
        try:
        count = int(count)
        except ValueError:
        continue
    
        if current_word == word:
        current_count += count 
        else:
        if current_word:
            print '%s	%s' % (current_word, current_count)
        current_count = count
        current_word = word
    
    if current_word == word:
        print '%s	%s' % (current_word, current_count)

    创造reduce.py文件

    cd /home/hadoop/wc
    sudo gedit reducer.py

    赋予权限

    chmod a+x /home/hadoop/mapper.py

    测试代码

    echo "foo foo quux labs foo bar quux" | /home/hadoop/wc/mapper.py
    
    echo "foo foo quux labs foo bar quux" | /home/hadoop/wc/mapper.py | sort -k1,1 | /home/hadoop/wc/reducer.p

    下载文件上传

    #上传
    cd  /home/hadoop/wc
    wget http://www.gutenberg.org/files/5000/5000-8.txt
    wget http://www.gutenberg.org/cache/epub/20417/pg20417.txt
    
    #下载
    cd /usr/hadoop/wc
    hdfs dfs -put /home/hadoop/hadoop/gutenberg/*.txt /user/hadoop/input
  • 相关阅读:
    IMP本质上是一个通用的函数指针
    yourphp常用标签
    yourphp目录结构
    HTTP与HTTPS的区别
    https和http有什么区别
    如何把浏览器不信任的网址设置为可信任的网点
    ico图标在谷歌浏览器中如何显示?
    Yourphp是一款完全开源免费的.核心采用了Thinkphp框架
    No input file specified的解决方法apache伪静态
    一个服务器的吞吐率
  • 原文地址:https://www.cnblogs.com/wxf2/p/9010169.html
Copyright © 2011-2022 走看看