简单提提:

Hive是一个仓储结构的工具,能对hadoop中的文件以类 sql的方式查询出来,也可以让熟悉mapper/reduce的开发者进行自定义操作,单总归而言,它只是一个解析引擎,将HiveQL语句解析成job任务让hadoop执行操作;

HDFS的目录/文件,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/R Job里使用这些数据

     特别注意:包含 * 的查询,比如 select * from tbl 不会生成 MapRedcue 任务

数据类型

l 基本数据类型

    tinyint/smallint/int/bigint

    float/double

    boolean

    string

ll  复杂数据类型

    Array/Map/Struct

注意:没有date/datetime类型



metastore:(hive元数据的集中存放地)(一般不用默认的,而采用mysql,故这里不多提)


Hive  metastore:


①metastore默认使用内嵌的derby数据库作为存储引擎

②Derby引擎的缺点:一次只能打开一个会话




Mysql metastore:



使用Mysql作为外置存储引擎,多用户同时访问。





外置引擎安装准备:


   前提: 在有hdfs部署的机上实践


 


Mysql的安装可以参考: 




将mysql加入开机启动

# chkconfig mysqld on



 


允许远程登录mysql

首先登录mysql数据,然后执行下面两行语句:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'itcast' WITH GRANT OPTION;
flush privileges;

metastore 的安装准备:





在usr 目录下创建了 hive ,进入,执行



wget http://mirrors.shuosc.org/apache/hive/hive-2.3.2/apache-hive-2.3.2-bin.tar.gz



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

然后修改名字 成为hive



修改/etc/profile文件,将hive加入环境变量

vim /etc/profile
export HIVE_HOME=/usr/hive/hive
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin

Source 一下,让配置生效

source /etc/profile


   //hive2.3.2的具体配置方法

上传数据库驱动mysql-connector-java-5.1.45.jar到/usr/hive/hive/lib

修改$HIVE_HOME/conf/hive-site.xml

将一下配置加入到hive-site.xml 文件中开头(标签<value>中的内容自己定义,就是linux用户名)

  

1、

<property>
     <name>system:java.io.tmpdir</name>
     <value>/home/apache-hive/tmpdir</value>
  </property>
  <property>
     <name>system:user.name</name>
     <value>root</value>
   </property>







2、

再次进入到hive目录中的conf文件中,配置hive-site.xml文件,利用vi编辑器中的搜索功能(Esc模式下输入 / ),分别找到


javax.jdo.option.ConnectionURL,


javax.jdo.option.ConnectionDriverName,


javax.jdo.option.ConnectionUserName,


javax.jdo.option.ConnectionPassword 这四项配置,其中这四项的<value>分别填:


<value>jdbc:mysql://192.168.88.129:3306/hive?characterEncoding=utf8&amp;useSSL=false</value>,


<value>com.mysql.jdbc.Driver</value>,


<value>root</value>,


<value>root</value>。(注:这里的192.168.88.129是服务器的地址)



3、


进入hive目录的bin文件中使用 ./schematool -dbType mysql -initSchema 进行元数据库初始化

初始化完成后,使用./hive命令启动hive,出现hive>的时候,就可以使用了。




配置途中可能遇到的异常:



问题一:connection refuse  重启hadoop,包括格式化


问题二:启动没问题,当进去的时候无论执行什么HiveQL语句都报如下错误

启动debug方式

hive -hiveconf hive.root.logger=DEBUG,console



hadoop自定义数据类型 hadoop内置数据类型_hadoop自定义数据类型




测试配置


启动hive

# hive

 

创建数据库

hive> create database test_db;

 

显示所有数据库

show databases;

 

使用数据库test_db

hive> use test_db;

 

创建学生表

hive> create table student(id int,name string);