hive是什么: hive是一个数据仓库,hive不是一个数据库,hive 不没有自己的数据,hive的数据存在hdfs 中,hive 依赖一个关系型数据库来存储 自己在 hdfs 中的数据的映射关系。

hive用来干什么:用来把 sql 翻译成 mapreduce java 代码,并且提交到 hadoop 中运行的工具。 hive类似  数据库的视图。hive 的本质是 为了不写  mapreduce java代码的 人提供的一种 简单的可以 操作 mapreduce 的 一种翻译工具。

hive 的安装:

    使用内嵌的数据库:

      1 解压 hive

      2 修改conf 目录下面的: cp hive-env.sh.template  hive-env.sh ,然后 配置 HADOOP_HOME,

        备注:或者把 HADOOP_HOME 写入环境变量(和第2 步 2 选一。都做也可以)。

    使用独立的数据库:

      

    cp hive-default.xml.template hive-site.xml 下面的修改都在这里面

      1.修改 数据库相关属性    

        修改 数据库连接。用户名,密码。驱动类,分别修改下面的几个配置:

A、修改javax.jdo.option.ConnectionURL属性。

<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost/hive?useSSL=false</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
B、修改javax.jdo.option.ConnectionDriverName属性。 <property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
C、修改javax.jdo.option.ConnectionUserName属性。即数据库用户名。 <property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>Username to use against metastore database</description>
</property>
D、修改javax.jdo.option.ConnectionPassword属性。即数据库密码。 <property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</description>
</property>

  备注1:使用什么数据库 需要把 对应数据库驱动 jar 到复制到 lib  目录下面。 

  备注2: mysql 的 搞版本需要  useSSL=false 指定或略安全套接字。

   2 修改一些文件目录:

E、添加如下属性hive.metastore.local:

<property>
<name>hive.metastore.local</name>
<value>true</value>
<description>controls whether to connect to remove metastore server or open a new metastore server in Hive Client JVM</description>
</property>
F、修改hive.server2.logging.operation.log.location属性 <property>
<name>hive.server2.logging.operation.log.location</name>
<value>/tmp/hive/operation_logs</value>
<description>Top level directory where operation logs are stored if logging functionality is enabled</descripti on>
</property>
G、修改hive.exec.local.scratchdir属性。 <property>
<name>hive.exec.local.scratchdir</name>
<value>/tmp/hive</value>
<description>Local scratch space for Hive jobs</description>
</property>
H、修改hive.downloaded.resources.dir属性。 <property>
<name>hive.downloaded.resources.dir</name>
<value>/tmp/hive/resources</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
I、修改属性hive.querylog.location属性。 <property>
<name>hive.querylog.location</name>
<value>/tmp/hive/querylog</value>
<description>Location of Hive run time structured log file</description>
</property>

  

  备注:如果 不是测试的换 上面的 目录最好不要指定到/tmp 里面。测试无所谓。

  3 修改日志配置: 好像可以不做(日志冲突也能运行)

  cp hive-log4j.properties.template hive-log4j.properties

  如果出现  日志冲突:
  cp /home/install/hive-1.2.1/lib/jline-2.12.jar /home/install/hadoop-2.5.1/share/hadoop/yarn/lib/   
  rm -rf /home/install/hadoop-2.5.1/share/hadoop/yarn/lib/jline-0.9.94.jar

  4 初始化 hive的映射的mysql表结构:(实测需要先初始化才能启动)

    schematool -dbType mysql -initSchema

  5 如果配置hive 的 环境变量 ,直接使用 hive  启动 ,如果没有配置 ,在 bin 里面去 使用   ./hive 启动。

    ./hive

-------------------------------------------------------------------------hive 的  服务启动  和  beeline 连接:- ---------------------------------------------  

hive  如果需要java 代码连接需要启动 hive 服务。

    ./hive --service hiveserver2

    如果需要后台启动: nohup hive --service hiveserver2 &

    查找这个进程:ps -ef|grep hiveserver2

    默认端口10000 。

使用 beelien 连接

  ./beeline

然后:

  !connect jdbc:hive2://centos1:10000

这样就 默认用户名  null 密码 null  就可以连接上了。( 默认没有密码),但是 hdfs 的写入全系有要求。这里的用户 就是 beeline 传给hdfs 的 用户名。所以这里最好使用 你的 hdfs 的用户名登陆,密码用null;

这个就是匿名登陆抛出的异常:Permission denied: user=anonymous, access=WRITE, inode="/user/hive/warehouse/test":root:supergroup:drwxr-xr-x

hive server2 配置密码方式参考:https://blog.csdn.net/hua_ed/article/details/51693659

如果 如果不能连接  可能是 hdfs 的权限问题,在hdfs 的配置文件core-site.xml中加入如下配置

<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>

  

备注: hive 没有索引,如果要提高查询效率,可以通过提高 mr 的速度来提高。提高 mr 的速度 可以通过给文件合理的 副本数,然后同时在多台机子上去同步执行。

----------------------------------------------------------------------------语法-----------------------------------------------------------

          

hive的 语法基础语法 :

  hive 的  语法和 sql  非常像:

1 显示数据库:show  databases;

2 使用数据库: use 数据库名;

3 显示表:show tables;

4 创建表

  CREATE TABLE pokes (foo INT, bar STRING);

  使用 字段分隔符: ROW FORMAT DELIMITED FIELDS TERMINATED BY '  '

  如果已经有表: alter table test set SERDEPROPERTIES('field.delim'='\t');

5 修改表名

  

 ALTER TABLE pokes RENAME TO test;

6 修改 表 字段

  

   ALTER TABLE pokes ADD COLUMNS (new_col INT);  部分修改
 ALTER TABLE invites REPLACE COLUMNS (foo INT, bar STRING, baz INT COMMENT 'baz replaces new_col2');  全部修改

7 删除表
  
  DROP TABLE pokes;

8 修改字段类型或者名字

  alter table test change id id2 bigint;

9 导入数据

   LOAD DATA 【LOCAL 】INPATH '/home/hadoop/hfxdoc/person.txt' 【OVERWRITE】 INTO TABLE test;

  

  LOCAL :导入本地文件

  OVERWRITE: 覆盖

  备注:导入的实际就是把这个文件复制到  hdfs 文件系统的这个表的 目录下面。如果是 原文件 在 hdfs 上,那么 会移动原来的文件到 表对应的目录下面。

10 基础查询

  select * from test;

11 支持  where ,like , group by,order by,join  等等 ...........

12  查询结果 输出到本地

    

   INSERT OVERWRITE LOCAL DIRECTORY '/tmp/dest4.out' SELECT src.value WHERE src.key >= 300;  //输出到磁盘
  insert overwrite directory  '/testrt' select * from test;  //输出到 hdfs 13 查询结果插入
  
  INSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100
14 插入
   insert into table award(id,event_id,award_type,amount,mark ) values(2,2,"b",2,"mark2"); 15 分区
  在 创建 表的 时候指定 partition by( a string);
  插入的时候指定 partition(a = "a")   备注:分区就是在表的文件夹下面建了一个目录,分区的数据文件在这个文件夹里面。 16 导出 表文件
   export table award to "/tools/data"; 17 导入sql 脚本
  hive -f 文件名 18 导入 和 load 类似
  import table a '路径' 19 hive的 自定义函数

hive 安装 和基本使用的更多相关文章

  1. Hive安装配置指北(含Hive Metastore详解)

    个人主页: http://www.linbingdong.com 本文介绍Hive安装配置的整个过程,包括MySQL.Hive及Metastore的安装配置,并分析了Metastore三种配置方式的区 ...

  2. hive安装--设置mysql为远端metastore

    作业任务:安装Hive,有条件的同学可考虑用mysql作为元数据库安装(有一定难度,可以获得老师极度赞赏),安装完成后做简单SQL操作测试.将安装过程和最后测试成功的界面抓图提交 . 已有的当前虚拟机 ...

  3. Hive安装与部署集成mysql

    前提条件: 1.一台配置好hadoop环境的虚拟机.hadoop环境搭建教程:稍后补充 2.存在hadoop账户.不存在的可以新建hadoop账户安装配置hadoop. 安装教程: 一.Mysql安装 ...

  4. 【转】 hive安装配置及遇到的问题解决

    原文来自: http://blog.csdn.net/songchunhong/article/details/51423823 1.下载Hive安装包apache-hive-1.2.1-bin.ta ...

  5. Hadoop之hive安装过程以及运行常见问题

    Hive简介 1.数据仓库工具 2.支持一种与Sql类似的语言HiveQL 3.可以看成是从Sql到MapReduce的映射器 4.提供shall.Jdbc/odbc.Thrift.Web等接口 Hi ...

  6. Hive安装与配置详解

    既然是详解,那么我们就不能只知道怎么安装hive了,下面从hive的基本说起,如果你了解了,那么请直接移步安装与配置 hive是什么 hive安装和配置 hive的测试 hive 这里简单说明一下,好 ...

  7. hive安装详解

    1.安装MYSQL simon@simon-Lenovo-G400:~$ sudo apt-get install mysql-server simon@simon-Lenovo-G400:~$ su ...

  8. macbook hive安装

    1 原材料 1.1 已经安装好的伪分布式hadoop,版本2.8.3(参见链接https://www.cnblogs.com/wooluwalker/p/9128859.html) 1.2 apach ...

  9. [hive] hive 安装、配置

    一.hive安装 1.官网下载 1.2.2版本 http://apache.fayea.com/hive/hive-1.2.2/ 2. 解压,此处目录为 /opt/hadoop/hive-1.2.2 ...

  10. Hive安装与配置--- 基于MySQL元数据

    hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过 ...

随机推荐

  1. Beta阶段冲刺---Day2

    一.Daily Scrum Meeting照片 二.今天冲刺情况反馈 1.昨天已完成的工作· 题目切换的改进· 支持退格操作 2.今天计划完成的工作· 数字以扑克牌的形式给出· 答案的乘除符号与游戏中 ...

  2. sqlite的数据类型

    参考sqlite官方文档:https://www.sqlite.org/datatype3.html 绝大多数的SQL数据库采用静态的.严格的数据类型,数据库中的值由数据表的列类型定义决定. 然而,s ...

  3. 引用google字体

    1.很简单直接   @import url(http://fonts.font.im/css?family=Shadows+Into+Light);  引入页面即可 2. 使用:  font-fami ...

  4. HDU 6038 17多校1 Function(找循环节/环)

    Problem Description You are given a permutation a from 0 to n−1 and a permutation b from 0 to m−1. D ...

  5. 微信小程序--扫描二维码

    场景---在微信中扫描朋友发来的二维码后进入小程序,其实那个地址是带有参数的,那么如何接收那个参数呢,其实就是进入小程序页面的onLoad生命周期行数的options参数里面.

  6. 解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误

    更改 sys.defaultencoding 为文件的编码方式  #! /usr/bin/env python  # -*- coding: utf-8 -*-  import sys  reload ...

  7. 九度OJ1122题-吃巧克力

    题目1122:吃糖果 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2453 解决:1957 题目描述: 名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名(盒内共有 N 块巧克力 ...

  8. s21day04 python笔记

    s21day04 python笔记 一.上周知识回顾及补充 回顾 补充 编译型语言和解释性语言 编译型:代码写完后,编译器将其变成成另外一个文件,然后交给计算机执行 常见的编译型语言:C,C++,Ja ...

  9. 20155219 2016-2017-2 《Java程序设计》第9周学习总结

    20155219 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 JDBC入门 JDBC简介 1.JDBC是java联机数据库的标准规范,它定义了一组标准类与 ...

  10. 数据结构HUFFman求权值

    #include <bits/stdc++.h>using namespace std;priority_queue< int, vector <int>, greate ...