Hive简述及几种访问方式

what is hive?

Hive 是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据的提取转化加载(ETL ),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类SQL查询语言,称为 HQL,它允许熟悉SQL的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。

Hive在hadoop生态圈中属于数据仓库的角色。他能够管理**hadoop中的数据,同时可以查询**hadoop中的数据。

优点与缺点

成本低,入手较快。

可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReuduce应用。

不支持实时查询。

Hive系统架构

元数据存储:通常是存储在关系数据库中,如mysql, derby 。 Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

驱动:解释器、编译器、优化器、执行器

查询编译器:

执行引擎:

服务器:

客户端组件:

可扩展接口部分:

Hive元数据存储

Derby(内嵌derby,默认)

单session

在启动终端日录创建元数据文件

不能多用户共享

MySQL

安装MySQL,配置账户,权限

mysql-connector-java-5.1.22-bin.jar拷贝至hive安装目录lib目录下面

修改hive-site.xml

Hive Client访问方式

1、Cli命令行

[root@hadoop1 ~]# hive

2、Hwi

[root@hadoop1 ~]# hive --service hwi
http://localhost:9999/hwi

3、HiveServer

启动hiveserver
[[email protected] ~]# hive --service hiveserver
如果出现org.apache.thrift.transport.TTransportException: Could not create ServerSocket on address 0.0.0.0/0.0.0.0:10000.
解决方法:端口被占用,kill该端口进程或者重新制定端口hive --service hiveserver -p 10001 

通过Hive-jdbc方式访问。
private static String HiveDriver="org.apache.hadoop.hive.jdbc.HiveDriver";
private static String url="jdbc:hive://hadoop1:10001/default";
private static String name="";
private static String password="";

Class.forName(HiveDriver);
Connection conn = DriverManager.getConnection(url,name,password);
Statement stat=conn.createStatement();
String sql="show tables";
ResultSet rs = stat.executeQuery(sql);

Demo:

package example;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class HiveJDBC {

    private static String HiveDriver="org.apache.hadoop.hive.jdbc.HiveDriver";
    private static String url="jdbc:hive://hadoop1:10001/default";
    private static String name="";
    private static String password="";

    public static void main(String[] args) {
        try {
            Class.forName(HiveDriver);
            Connection conn = DriverManager.getConnection(url,name,password);
            Statement stat=conn.createStatement();
            String sql="show tables";
            String sqlString = "select * from addressall_2015_07_09";
            ResultSet rs = stat.executeQuery(sqlString);
            while(rs.next()){
                //hive是从1开始的
                //System.out.println(rs.getString(1));
                System.out.println(rs.getString(1)+" "+rs.getInt(2)+" "+rs.getInt(3)+" "+rs.getInt(4));
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

运行结果:

2015_07_09 536 488 493

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-02 11:58:28

Hive简述及几种访问方式的相关文章

1、打印二进制机器码,程序内存分析,大端序小端序,指针数组,数组指针,数组的三种访问方式,typedef,#if-0-#endif,求数组大小,括号表达式

 1.打印二进制机器码(分别表示32位的和64位的) #include <stdio.h> /*按照8位的长度打印一个数值*/ void dis8bit(char val) { int bit = 8; while(bit--) { if(1<<bit&val){ printf("1"); } else { printf("0"); } if(!(bit%4)) printf(" "); } putchar(1

一维数组的两种访问方式

一维数组指针,int *prt=new int[10],*ptr和ptr[0]是一样的吗? 通过下面代码测试: int * array = new int[10]; for(int i=0;i<10;i++) { array[i] = i; } for(int i=0;i<10;i++) { cout<<*(array+i)<<endl; } 所以数组可以用 array[i]和 *(array+i)两种方式访问. 一维数组的两种访问方式

hive命令的三种执行方式

hive命令的3种调用方式 方式1:hive –f  /root/shell/hive-script.sql(适合多语句) hive-script.sql类似于script一样,直接写查询命令就行 不进入交互模式,执行一个hive script 这里可以和静音模式-S联合使用,通过第三方程序调用,第三方程序通过hive的标准输出获取结果集. $HIVE_HOME/bin/hive -S -f /home/my/hive-script.sql (不会显示mapreduct的操作过程) 那么问题来了

4.Struts2中Action的三种访问方式

1.传统的访问方式-很少使用 通过<action>标签中的method属性,访问到action中的具体方法 具体实现: 1.action代码 import com.opensymphony.xwork2.ActionSupport; /** * action访问方式 * 演示传统的配置方式 * @author NEWHOM * */ public class CustomerAction extends ActionSupport { private static final long ser

SVN--subversion的五种访问方式

SVN的访问方式 Subversion 文件仓库可以通过许多不同的方式进行访问(Check Out,签出)——通过本地硬盘,或者通过各种网络协议.无论如何,文件仓库的位置总是使用 URL 来表示.下表显示了不同的 URL 模式对应的访问方法: 模式 访问方法 file:/// 直接访问本地硬盘上文件仓库 http:// 通过 WebDAV 协议访问支持 Subversion 的 Apache 2 Web 服务器 https:// 类似 http://,支持 SSL 加密 svn:// 通过自带协

字典的两种访问方式

字典的访问方式: 根据键访问值 info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'} print(info['name']) print(info['address']) 若访问不存在的键,则会报错: >>> info['age'] Traceback (most recent call last): File "<stdin>", line 1, in <module>

【原创】大叔经验分享(23)hive metastore的几种部署方式

hive及其他组件(比如spark.impala等)都会依赖hive metastore,依赖的配置文件位于hive-site.xml hive metastore重要配置 hive.metastore.warehouse.dirhive2及之前版本默认为/user/hive/warehouse/,创建数据库或表时会在该目录下创建对应的目录 javax.jdo.option.ConnectionURLjavax.jdo.option.ConnectionDriverNamejavax.jdo.o

.hive命令的3种调用方式 以及源码

安装 hive后 在命令行 如输入 Hive -h -后面随便输入.让让他报错进入命令提示界面 -d 定义一个变量 两种形式 -d A=B or --define A=B -e 执行sql语句  hive -e "select * from a" -f 执行一个sql片段.或者包含sql语句的文本文件 -i  初始化 sql文件.或者包含sql语句的文本文件 [[email protected] Desktop]$ hive -iMissing argument for option:

Jquery Ajax 两种访问方式

1.一般提交 $.ajax({ type: "POST", //提交方式 url: "some.php", //请求地址 data: "name=John&location=Boston", //参数 success: function(msg){ //请求成功后的处理 msg为返回值 alert( "Data Saved: " + msg ); } }); 2. 用form表单提交 var options = { u