zoukankan      html  css  js  c++  java
  • 安装hive和安装mysql

    首先检查系统安装的mysql版本,使用命令    rpm  -qa | grep mysql

    若要安装自己的版本,则先执行删除操作       rpm  -e  xxxxx.rpm   --nodeps

    然后安装自己的版本,        rpm  -i  xxxxx.rpm

    f4a6665a-a274-4170-9c80-1917d8e206cf

    远程连接mysql,操作步骤如下:

    1、进入mysql环境中 mysql -uroot -proot

    2、设置mysql,授权hive可以远程连接mysql数据库 grant  all on hive.* to 'root'@'%' identified by 'root';

        上面这句话的含义是,授权所有匹配hive表的任意位置的root用户,identified by 'root',是说前面root用户的密码,我的root用户密码设置的也是root。

    3、设置完成后,刷新一下     flush  privileges;

    创建表的两个步骤,首先创建一个表,然后给表加载数据。

    创建一个表   CREATE TABLE t1(id int);

    hive在hadoop中的表,实际上也是按文件系统的方式存放的,因此,可以给t1表中添加数据,可以有两种方式:

    方式一,使用命令  LOAD DATA LOCAL INPATH  '/usr/local/id'    INTO TABLE t1;

    方式二,直接使用命令  hadoop fs -put /usr/local/id  /hive/t1

    以上的id文件是在hadoop本地上。

    创建多个字段的表t2

    CREATE TABLE t2(id int,name string) FROM FORMAT DELIMITED FIELDS TERMINATED BY ' ';

    然后在hadoop本地,例如/usr/local/目录下创建一个stu文件,里面包含两个字段,分别用制表符分隔开

    然后添加到天t2中    hadoop fs -put /usr/local/stu /hive/t2

    在hive中查询,除了select * from 语句,其他的所有语句都走mapreduce,因为select * from 是全盘扫描。

    创建分区表

    例如按天来存放表t3,

    CREATE TABLE T3(id int)  PARTITIONED  BY  (day int);      这句话含义是,安装天数来存放表t3

    LOAD DATA LOCAL INPATH '/root/id'  INTO TABLE t3  PARTITION(day='22');

    LOAD DATA LOCAL INPATH '/root/id'  INTO TABLE t3  PARTITION(day='23');

    执行以上语句话会在hive表(对应在hadoop中是hive文件夹)中分别创建22和23两个文件夹,每个文件夹下面都有t3.

    那么查询的时候可以使用   select * from t3 where day=22;

    桶表

    桶表是对数据进行哈希取值(使用hash值对桶的个数进行取模),然后放在不同的文件中存储

    create table t4(id int) clustered by(id) into 4 buckets;          //按照表中id那一列的hash值分配到4个桶中

        set hive.enforce.bucketing = true;

        insert into table t4 select id from t3;     //根据id的hash值将t3中的数据分配到t4的每个桶中

    注:t4中每个桶对应一个文件,里面存放中从t3表分配过来的数据。

    25ed9fa3-2772-4770-8978-bfd71a69551b

    分区表是使用文件进行划分,桶表使用文件进行划分。

    外部表;

    前面说的表都是内部表

    外部表是存放在hive表外部的,通过时用命令

    create external table t5(id int) location '/external'; 

    可以创建一个外部表t5,他在hive中只是一个链接,在hive中删除t5,只是删除了这个链接,这个表中的内容在外部还是存在的。

    java客户端操作hive:

    首先启动hive远程服务     c9948db0-9e4b-40ab-8108-32422216f30a

    即,在终端执行命令    hive --service hiveserver >/dev/null  2>/dev/null &

    然后在eclipse中添加hive的lib目录下的jar包

    1. package hive;
    2. import java.sql.Connection;
    3. import java.sql.DriverManager;
    4. import java.sql.ResultSet;
    5. import java.sql.Statement;
    6. public class App {
    7. public static void main(String[] args) throws Exception{
    8. Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
    9. //链接default的数据库
    10. Connection con = DriverManager.getConnection("jdbc:hive://192.168.56.100:10000/default", "", "");
    11. Statement stmt = con.createStatement();
    12. //查询default数据库中的t1表
    13. String querySQL="SELECT * FROM default.t1";
    14. ResultSet res = stmt.executeQuery(querySQL);
    15. while (res.next()) {
    16. System.out.println(res.getInt(1));//注意数据库中列是1开始的
    17. }
    18. }
    19. }
  • 相关阅读:
    帮助应届生、年轻程序员快速成长的12个锦囊<转载>
    曾国藩教您:如何富过三代
    Mvc示例代码调试之二——调试示例讲解
    如何处理婚姻问题
    jQuery对象与dom对象相互转换
    Mvc示例代码调试之一----调试工具及设置(用firebug与vs联合调试)
    Mvc示例之三——用Filter进行简单身份验证
    沟通的艺术
    做bs开发需要学习哪些技术
    我所读过的技术书籍
  • 原文地址:https://www.cnblogs.com/wyhuang/p/3918602.html
Copyright © 2011-2022 走看看