3.hive的thriftserver服务
1.ThiftServer介绍
正常的hive仅允许使用HiveQL执行查询、更新等操作,并且该方式比较笨拙单一。幸好Hive提供了轻客户端的实现,通过HiveServer或者HiveServer2,客户端可以在不启动CLI的情况下对Hive中的数据进行操作,两者都允许远程客户端使用多种编程语言如Java、Python向Hive提交请求,取回结果 使用jdbc协议连接hive的thriftserver服务器
可以实现远程访问
可以通过命令链接多个hive
2.ThiftServer启动
启动hive的thriftserver
#cd /soft/hive/bin/
#./hiveserver2
#默认启动非后台启动 需要开另外一个终端
#端口号为10000
使用beeline连接hiveserver2服务器,client端命令行程序
#beeline
Beeline version 2.1.1 by Apache Hive
#输入要链接的服务
beeline> !connect jdbc:hive2://localhost:10000
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/soft/apache-hive-2.1.1-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/soft/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Connecting to jdbc:hive2://localhost:10000
Enter username for jdbc:hive2://localhost:10000:
Enter password for jdbc:hive2://localhost:10000:
Connected to: Apache Hive (version 2.1.1)
Driver: Hive JDBC (version 2.1.1)
17/07/13 10:31:00 [main]: WARN jdbc.HiveConnection: Request to set autoCommit to false; Hive does not support autoCommit=false.
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://localhost:10000>
3.beeline的基本用法
查看数据库
0: jdbc:hive2://localhost:10000> show databases;
+----------------+--+
| database_name |
+----------------+--+
| default |
| liuyao |
+----------------+--+
2 rows selected (1.485 seconds)
查看表
0: jdbc:hive2://localhost:10000> use liuyao;
No rows affected (0.123 seconds)
0: jdbc:hive2://localhost:10000> show tables;
+-----------+--+
| tab_name |
+-----------+--+
| test |
+-----------+--+
1 row selected (0.283 seconds)
或者使用
0: jdbc:hive2://localhost:10000> !tables
+------------+--------------+-------------+-------------+----------+-----------+-------------+------------+----------------------------+-----------------+--+
| TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | TYPE_CAT | TYPE_SCHEM | TYPE_NAME | SELF_REFERENCING_COL_NAME | REF_GENERATION |
+------------+--------------+-------------+-------------+----------+-----------+-------------+------------+----------------------------+-----------------+--+
| | liuyao | test | TABLE | NULL | NULL | NULL | NULL | NULL | NULL |
+------------+--------------+-------------+-------------+----------+-----------+-------------+------------+----------------------------+-----------------+--+
0: jdbc:hive2://localhost:10000>
创建表
CREATE TABLE emp0
(
name string,
arr ARRAY<string>,
stru1 STRUCT<sex:string,age:int>,
map1 MAP<string,int>,
map2 MAP<string,ARRAY<string>>
)
;
查看表结构
0: jdbc:hive2://localhost:10000> desc emp0;
+-----------+-----------------------------+----------+--+
| col_name | data_type | comment |
+-----------+-----------------------------+----------+--+
| name | string | |
| arr | array<string> | |
| stru1 | struct<sex:string,age:int> | |
| map1 | map<string,int> | |
| map2 | map<string,array<string>> | |
+-----------+-----------------------------+----------+--+
5 rows selected (0.296 seconds)
删除表
0: jdbc:hive2://localhost:10000> use default;
No rows affected (0.092 seconds)
0: jdbc:hive2://localhost:10000> drop table emp0;
No rows affected (1.823 seconds)
4. 数据导入查询等演示
生成数据
#vim /root/hive.data
放入以下数据
Michael|Montreal,Toronto|Male,30|DB:80|Product:Developer^DLead
Will|Montreal|Male,35|Perl:85|Product:Lead,Test:Lead
Shelley|New York|Female,27|Python:80|Test:Lead,COE:Architect
Lucy|Vancouver|Female,57|Sales:89,HR:94|Sales:Lead
创建表
CREATE TABLE emp1
(
name string,
arr ARRAY<string>,
stru1 STRUCT<sex:string,age:int>,
map1 MAP<string,int>,
map2 MAP<string,ARRAY<string>>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|' //字段分隔符
COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY ':' //map的kv之间分隔符
LINES TERMINATED BY '\n'; //集合元素分隔符导入数据
如果数据在本地用
0: jdbc:hive2://localhost:10000> load data local inpath '/root/hive.data' into table emp0;
No rows affected (0.956 seconds)
0: jdbc:hive2://localhost:10000>
查询
0: jdbc:hive2://localhost:10000> select * from emp0;
+------------+-------------------------+----------------------------+-----------------------+----------------------------------------+--+
| emp0.name | emp0.arr | emp0.stru1 | emp0.map1 | emp0.map2 |
+------------+-------------------------+----------------------------+-----------------------+----------------------------------------+--+
| Michael | ["Montreal","Toronto"] | {"sex":"Male","age":30} | {"DB":80} | {"Product":["Developer^DLead"]} |
| Will | ["Montreal"] | {"sex":"Male","age":35} | {"Perl":85} | {"Product":["Lead"],"Test":["Lead"]} |
| Shelley | ["New York"] | {"sex":"Female","age":27} | {"Python":80} | {"Test":["Lead"],"COE":["Architect"]} |
| Lucy | ["Vancouver"] | {"sex":"Female","age":57} | {"Sales":89,"HR":94} | {"Sales":["Lead"]} |
| | NULL | NULL | NULL | NULL |
+------------+-------------------------+----------------------------+-----------------------+----------------------------------------+--+
5 rows selected (1.049 seconds)
0: jdbc:hive2://localhost:10000> select arr[0] from emp0;
+------------+--+
| c0 |
+------------+--+
| Montreal |
| Montreal |
| New York |
| Vancouver |
| NULL |
+------------+--+ 5 rows selected (0.656 seconds)
0: jdbc:hive2://localhost:10000> select stru1 from emp0;
+----------------------------+--+
| stru1 |
+----------------------------+--+
| {"sex":"Male","age":30} |
| {"sex":"Male","age":35} |
| {"sex":"Female","age":27} |
| {"sex":"Female","age":57} |
| NULL |
+----------------------------+--+
5 rows selected (0.193 seconds)
0: jdbc:hive2://localhost:10000> select map1 from emp0;
+-----------------------+--+
| map1 |
+-----------------------+--+
| {"DB":80} |
| {"Perl":85} |
| {"Python":80} |
| {"Sales":89,"HR":94} |
| NULL |
+-----------------------+--+
5 rows selected (0.216 seconds)
0: jdbc:hive2://localhost:10000> select map1["DB"] from emp0;
+-------+--+
| c0 |
+-------+--+
| 80 |
| NULL |
| NULL |
| NULL |
| NULL |
+-------+--+
5 rows selected (0.249 seconds)
5.使用api编程方式连接到thriftserver服务器
public class TestCURD {
@Test
public void select() throws Exception{
String driverClass = "org.apache.hive.jdbc.HiveDriver";
String url = "jdbc:hive2://192.168.10.145:10000/liuyao";
Class.forName(driverClass);
Connection connection = DriverManager.getConnection(url);
System.out.println(connection);
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery("SELECT * FROM emp0");
while (rs.next()){
int id = rs.getInt(1);
String name = rs.getString(2);
System.out.println(id + "," + name);
}
rs.close();
connection.close();
}
}
3.hive的thriftserver服务的更多相关文章
- SparkSQL ThriftServer服务的使用和程序中JDBC的连接
SparkSQL ThriftServer服务的使用和程序中JDBC的连接 此时要注意版本问题,我第一次用的是hive2.1.1的,因为要用sparksql的hive服务,但是sparksql默认的是 ...
- 037 SparkSQL ThriftServer服务的使用和程序中JDBC的连接
一:使用 1.实质 提供JDBC/ODBC连接的服务 服务运行方式是一个Spark的应用程序,只是这个应用程序支持JDBC/ODBC的连接, 所以:可以通过应用的4040页面来进行查看操作 2.启动服 ...
- Hive环境搭建和SparkSql整合
一.搭建准备环境 在搭建Hive和SparkSql进行整合之前,首先需要搭建完成HDFS和Spark相关环境 这里使用Hive和Spark进行整合的目的主要是: 1.使用Hive对SparkSql中产 ...
- 大数据学习(12)—— Hive Server2服务
什么是Hive Server2 上一篇我们启动了hive --service metastore服务,可以通过命令行来访问hive服务,但是它不支持多客户端同时访问,参见官网说明:HiveServer ...
- 【自动化】基于Spark streaming的SQL服务实时自动化运维
设计背景 spark thriftserver目前线上有10个实例,以往通过监控端口存活的方式很不准确,当出故障时进程不退出情况很多,而手动去查看日志再重启处理服务这个过程很低效,故设计利用Spark ...
- hive on spark VS SparkSQL VS hive on tez
http://blog.csdn.net/wtq1993/article/details/52435563 http://blog.csdn.net/yeruby/article/details/51 ...
- Hadoop学习笔记—17.Hive框架学习
一.Hive:一个牛逼的数据仓库 1.1 神马是Hive? Hive 是建立在 Hadoop 基础上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储. ...
- 附录C 编译安装Hive
如果需要直接安装Hive,可以跳过编译步骤,从Hive的官网下载编译好的安装包,下载地址为http://hive.apache.org/downloads.html . C.1 编译Hive C.1 ...
- Hive Streaming 追加 ORC 文件
1.概述 在存储业务数据的时候,随着业务的增长,Hive 表存储在 HDFS 的上的数据会随时间的增加而增加,而以 Text 文本格式存储在 HDFS 上,所消耗的容量资源巨大.那么,我们需要有一种方 ...
随机推荐
- android学习1:清晰详细android环境搭建,超简单
废话少说,今天是Android学习的开篇的博客,接下来将把自己学习android的各种问题和经历总结一下,其实之前已经自己学过半年了,但是因为开始时刚学的移动端开发还没有概念,当时总结工作又做的不好, ...
- Extjs6 组件浅谈
一.Component组件 一个 Ext JS 应用的界面由一个或多个叫做 组件的控件组成. 所有的组件都是 Ext.Component 类的子类,这个类可以允许参与包含实例化.渲染.自动大小和位置以 ...
- MySQL学习【第九篇存储引擎】
一.存储引擎介绍 1.我们知道mysql程序构成由连接层,sql层,存储引擎层.存储引擎层和磁盘进行交互,由其去取数据,而我们取得数据是表的形式展现出来,谁做的呢?就是存储引擎结构化成表的形式返回给用 ...
- python使用tablib库生成xls表格
参考文档:http://python-tablib.org Tablib是一个MIT许可的格式不可知的表格数据集库.它允许您导入,导出和操作表格数据集.高级功能包括隔离,动态列,标签和过滤,以及无缝格 ...
- 树莓派3B+学习笔记:6、安装TeamViewer
TeamViewer是一个远程控制软件,它可以在任何防火墙和NAT代理的后台实现桌面共享和文件传输,界面简洁,操作简单,不需要专业知识就可轻松上手. TeamViewer电脑端下载网址www.team ...
- 轻松解决U盘加密问题
很多小伙伴常常会遇到这样的问题,比如说有朋友或者同事想借用你的u盘,处于人情世故你又不得不借,但是又不喜欢自己的文件被别人看到或者担心丢失或被修改,在此提供一种给u盘加密或者给u盘里的文件加密的方法. ...
- GD32F20x系列使用问题总结
GD单片机近几年越来越火了,既有他自身相比与ST的价格优势,也有支持国货的信仰加成.然而一个新的东西,或者说一个相对较新的东西,在使用的友好性和资料的完整性方面还有很长的路要走. 现将个人使用过程中碰 ...
- cygwin下安装NCL
1.安装cygwin 到cygwin官网https://www.cygwin.com/下载安装程序,setup-x86.exe,注意能下载这个安装程序, setup-x86_64.exe64位不支 ...
- JournalNode的作用
NameNode之间共享数据(NFS .Quorum Journal Node(用得多)) 两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信.当activ ...
- 关于Oracle分区表的理解
Oracle分区表首要目的是用于管理数据文件,对数据文件进行划分和管理.但常常会听到通过分区表来提高性能的说法,实际上,分区表结合索引,加上有效的SQL语句,确实可以提高性能.什么是有效的SQL呢,就 ...