zoukankan      html  css  js  c++  java
  • Hive安装与使用

      Hive是用类似sql语句的形式去操作存储在HDFS上文件的一个客户端,功能上是一个数据仓库,需要配合一个关系型数据库使用,hive自带了一个关系型数据库derby,但是官方不推荐使用,这里我们使用Mysql。关系型数据库的作用是将HDFS上的数据结构化,将结构和数据映射对应起来。

      mysql用于存储映射关系,HDFS用来存储数据

    一、安装mysql 

      略

    二、Hive安装

     1) 解压Hive

    tar -zxvf apache-hive-1.0.1-bin.tar.gz

     2) 生成hive-site.xml

    cp hive-default.xml.template hive-site.xml

     3) 创建指定路径和用户名

      ① 创建指定路径,替换hive-site.xml中system:java.io.tmpdir的值

    mkdir /home/whu/hadoop-hive/hive-1.0.1-bin/iotmp

        替换hive-site.xml中system:java.io.tmpdir的值

      ② 在上面文件夹下创建指定用户名文件夹

    cd /home/whu/hadoop-hive/hive-1.0.1-bin/iotmp
    mkdir whu

        替换hive-site.xml中system:user.name的值

     4) mysql中创建数据库

    mysql -u root -p

      创建指定数据库

    create database hive;

     5) 修改hive-site.xml

      ① 修改指定的关系型数据库

    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive</value>
    </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>    

      注:因为我的测试环境hive和mysql是装在一台机器,所以没有设置root进行远程登陆,如果mysql和hive不在一台机器,需要配置root或者其他用户进行远程登陆

    grant all on *.* to root@'%' identified by 'root';

      ④ 修改连接数据库的密码

    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>root</value>
    </property>

     6) 将mysql驱动拷贝到hive的lib目录

    cp mysql-connector-java-5.1.34-bin.jar  /home/whu/soft/apache-hive/lib

      注:如果mysql驱动器版本不对,会导致删除表失败,所以放高版本的mysql驱动器更合适。

     7) 启动Hive

      先将hive添加到环境变量

    export HADOOP_HOME=/home/whu/soft/apache-hive
    export PATH=$HADOOP_HOME:bin

      使环境变量生效

    source /etc/profile

      启动hive

    hive

    三、Hive简单使用

      1) 显示数据库

    show databases;

      2) 显示数据表

    use database;
    
    show tables;

      3) 创建数据库

    create database basename;

      4) 删除数据库

    drop datbase basename;

      5) 创建表

    create table tablename( colname coltype, ...)
    row format delimited
    fields terminated by '/001'
    stored as textfile;

      6)删除表

    drop table if exists tablename;

      7) 上传数据

    load data local inpath 'path' into table tablename;

      8) 插入数据

    INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement;

     

  • 相关阅读:
    oracle 函数WMSYS.WM_CONCAT()的用法(行转列) 老猫
    PL/SQL 数独 九宫图 老猫
    oracle10g rman backup and recover 老猫
    Oracle SQL的优化 老猫
    Oracle数据库中的字符处理技巧总结 老猫
    WITH分析函数 老猫
    30套JSP网站源代码合集
    Java获取系统信息(cpu,内存,硬盘,进程等)的相关方法
    [原]Web Service学习
    常用Web Service汇总(天气预报、时刻表等)
  • 原文地址:https://www.cnblogs.com/qiaoqianxiong/p/5052694.html
Copyright © 2011-2022 走看看