安装hive和安装mysql

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

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

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

远程连接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 ‘\t‘;

然后在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表分配过来的数据。

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

外部表;

前面说的表都是内部表

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

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

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

java客户端操作hive:

首先启动hive远程服务    

即,在终端执行命令    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. }

安装hive和安装mysql,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。