1.为hive配置mysql数据库

conf/hive-site.xml

<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://weekend01:3306/hive?createDatabaseIfNotExist=true</value> //hive为数据库名称,后面的语义为如果库不存在则创建
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>

还需要mysql的驱动jar包

2.建表

CREATE TABLE page_view(viewTime INT, userid BIGINT,
     page_url STRING, referrer_url STRING,
     ip STRING COMMENT 'IP Address of the User')
 COMMENT 'This is the page view table'
 PARTITIONED BY(dt STRING, country STRING)
 ROW FORMAT DELIMITED
   FIELDS TERMINATED BY '\001'   #按某分隔符分隔字段
STORED AS SEQUENCEFILE;   TEXTFILE

SEQUENCEFILE:二进制文本,以键值对来组织的

执行创建操作后将相关的元数据表结构记录到数据库中

然后hdfs中会在相应的路径下生成数据库相关的数据文件夹和文件

3.导入数据

//从本地或者hdfs其他路径下导入数据到hive的表中(实质就是将文件上传到hdfs中hive管理目录下)
load data local inpath '/home/hadoop/ip.txt' into table tab_ext;

就是将数据文件拷贝到hdfs相关的数据库路径下去

4.如果数据文件中某一行数据中存在字段缺失,则在查询的结果中在最后一列用NULL字符进行标识。

5.hive表有两大类,MANAGED TABLE和EXTERNAL TABLE

EXTERNAL TABLE不需要数据文件必须存在于特定的目录中去

/external外部表
CREATE EXTERNAL TABLE tab_ip_ext(id int, name string,
     ip STRING,
     country STRING)
 ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
 STORED AS TEXTFILE
 LOCATION '/external/user';

MANAGED TABLE被执行drop操作时,hdfs中的数据库文件都被删除掉了,并且数据库中的元数据也被删除了

EXTERNAL TABLE被执行drop操作时,hdfs中的数据库文件并没有被删除,只是删除了数据库中的元数据。

6.// CTAS  根据select语句建表结构
CREATE TABLE tab_ip_ctas
   AS
SELECT id new_id, name new_name, ip new_ip,country new_country
FROM tab_ip_ext
SORT BY new_id;

7.//insert from select   通过select语句批量插入数据到别的表
create table tab_ip_like like tab_ip;
insert overwrite table tab_ip_like
    select * from tab_ip;

8.//PARTITION  分区表
create table tab_ip_part(id int,name string,ip string,country string)
    partitioned by (year string)
    row format delimited fields terminated by ',';

load data local inpath '/home/hadoop/data.log' overwrite into table tab_ip_part
     partition(year='1990');
load data local inpath '/home/hadoop/data2.log' overwrite into table tab_ip_part
     partition(year='2000');

分区查询

select count(*) from tab_ip_part  where part_flag='part2';

9.hql语法

 //array
create table tab_array(a array<int>,b array<string>)
row format delimited
fields terminated by '\t'
collection items terminated by ',';

//map
create table tab_map(name string,info map<string,string>)
row format delimited
fields terminated by '\t'
collection items terminated by ','
map keys terminated by ':';

load data local inpath '/home/hadoop/hivetemp/tab_map.txt' overwrite into table tab_map; insert into table tab_map select name,map('name',name,'ip',ip) from tab_ext;

//struct

create table tab_struct(name string,info struct<age:int,tel:string,addr:string>) row format delimited fields terminated by '\t' collection items terminated by ','

load data local inpath '/home/hadoop/hivetemp/tab_st.txt' overwrite into table tab_struct; insert into table tab_struct select name,named_struct('age',id,'tel',name,'addr',country) from tab_ext;

//cli shell  通过shell执行hive的hql语句
hive -S -e 'select country,count(*) from tab_ext' > /home/hadoop/hivetemp/e.txt

创建自定义函数

hive>add jar /home/hadoop/myudf.jar;
hive>CREATE TEMPORARY FUNCTION fanyi AS 'cn.itcast.hive.Fanyi';
select id,name,ip,fanyi(country) from tab_ip_ext;

10.hbase  

mysql和oracle是传统的关系型数据库,优势在于处理复杂的多表之间的关系

hbase不提供表的关联查询,属于nosql的范畴,只适合简单的查询

hbase的表容量可以非常大

HBase表结构:建表时,不需要限定表中的字段,只需要指定若干个列族,列族中可以存储任意多个列(KeyValue:列名和列值)

一个value可以有多个版本,通过版本号来区分,默认为时间戳

要查询某一个具体字段的值,需要指定的坐标:表明---->行键---->列族(ColumnFamily):列名(qualifier)---->版本号

11.hbase的集群架构及表存储机制

将数据切分成不同的region,放置于不同的region Server中(以HFile的形式放置于HDFS的DataNo的中)

HMaster:不负责存储表数据,负责管理RegionServer的状态,负责RegionServer的负载均衡(HBase集群中,HMaster可以有多个,实现高可用)

hbase的寻址实现:将用户数据表记录按行键划分为不同的region,然后将相关的标识信息存储到系统表中(META表),较大的META表也会按这种形式继续拆分进行存储(ROOT表)

vim hbase-site.xml
<configuration>
<!-- 指定hbase在HDFS上存储的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://ns1/hbase</value>
</property>
<!-- 指定hbase是分布式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定zk的地址,多个用“,”分割 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>weekend04:2181,weekend05:2181,weekend06:2181</value>
</property>
</configuration>

在哪执行命令启动HBase,哪个节点就是HMaster,然后根据regionservers文件中的配置启动region servers
vim regionservers
 weekend03
 weekend04
 weekend05
 weekend06

hadoop day 6的更多相关文章

  1. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

  2. 初识Hadoop、Hive

    2016.10.13 20:28 很久没有写随笔了,自打小宝出生后就没有写过新的文章.数次来到博客园,想开始新的学习历程,总是被各种琐事中断.一方面确实是最近的项目工作比较忙,各个集群频繁地上线加多版 ...

  3. hadoop 2.7.3本地环境运行官方wordcount-基于HDFS

    接上篇<hadoop 2.7.3本地环境运行官方wordcount>.继续在本地模式下测试,本次使用hdfs. 2 本地模式使用fs计数wodcount 上面是直接使用的是linux的文件 ...

  4. hadoop 2.7.3本地环境运行官方wordcount

    hadoop 2.7.3本地环境运行官方wordcount 基本环境: 系统:win7 虚机环境:virtualBox 虚机:centos 7 hadoop版本:2.7.3 本次先以独立模式(本地模式 ...

  5. 【Big Data】HADOOP集群的配置(一)

    Hadoop集群的配置(一) 摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问 ...

  6. Hadoop学习之旅二:HDFS

    本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...

  7. 程序员必须要知道的Hadoop的一些事实

    程序员必须要知道的Hadoop的一些事实.现如今,Apache Hadoop已经无人不知无人不晓.当年雅虎搜索工程师Doug Cutting开发出这个用以创建分布式计算机环境的开源软...... 1: ...

  8. Hadoop 2.x 生态系统及技术架构图

    一.负责收集数据的工具:Sqoop(关系型数据导入Hadoop)Flume(日志数据导入Hadoop,支持数据源广泛)Kafka(支持数据源有限,但吞吐大) 二.负责存储数据的工具:HBaseMong ...

  9. Hadoop的安装与设置(1)

    在Ubuntu下安装与设置Hadoop的主要过程. 1. 创建Hadoop用户 创建一个用户,用户名为hadoop,在home下创建该用户的主目录,就不详细介绍了. 2. 安装Java环境 下载Lin ...

  10. 基于Ubuntu Hadoop的群集搭建Hive

    Hive是Hadoop生态中的一个重要组成部分,主要用于数据仓库.前面的文章中我们已经搭建好了Hadoop的群集,下面我们在这个群集上再搭建Hive的群集. 1.安装MySQL 1.1安装MySQL ...

随机推荐

  1. oracle 夸服务器、数据库查询

      create public database link 连接名 connect to 需要连接数据库名 identified by  需要连接数据库密码 USING '(DESCRIPTION = ...

  2. 【C/C++】数组 & 指针

    int main() { ]; ]; ][]; ]; ]; ]; ][]; cout << sizeof(a) << endl; cout << sizeof(pa ...

  3. unity 中让Text的文字动态刷新形式

    第一种刷新文字形式 using UnityEngine; using System.Collections; using UnityEngine.UI; public class SensorText ...

  4. 不使用接口的 limit 控制分页的容量

    1.html中v-for 此时的v-for对象并不是在后台获取的数组list,而是计算属性的函数名pageList <div v-for="item in pageList" ...

  5. DCOMP——分散式计算

    新型网络DCOMP 据国外媒体2017年11月7日报道,曾经发明互联网的秘密机构“美国国防部高级研究计划局(DARPA)”如今正致力于研发能够完胜互联网的新网络,并且启动了一项链接物联网.智能手机.智 ...

  6. 考研计算机复试(广东工业大学C语言复试2014~2017笔试题)(精华题选)

    1.C语言中,全局变量的存储类别是() A.extern B.void C.int   D.static 2.静态变量: (1)static 外部变量===>在函数外定义,只能在本文件中使用 ( ...

  7. DOM艺术基础练习

    每个月对于学习的JAVASCRIPT进行总结,加油 主要应用知识点   :

  8. ubuntu 谷歌浏览器打开时需要输入密码来解锁密码环

    问题: ubuntu14.04, 设置系统自动登陆账户,但每次开机打开 google chromium 浏览器,会要求输入一次密码,来解锁登录密钥环.很麻烦. 解锁登录密钥环:输入密码以解锁您的登录密 ...

  9. JavaScript js 引入CDN 不生效 注意事项

    [博客园cnblogs笔者m-yb原创,转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708]https ...

  10. 软工作业PSP与单元测试训练:java语言判断电子邮箱格式

    任务说明(二选一): 一.实现模块判断传入的身份证号码的正确性: 二.实现模块判断传入的电子邮箱账号的正确性:   实现要求: 一.实现功能模块: 1. 判断邮箱地址是否为空: 2. 判断邮箱地址是否 ...