1.ThiftServer介绍

  1. 正常的hive仅允许使用HiveQL执行查询、更新等操作,并且该方式比较笨拙单一。幸好Hive提供了轻客户端的实现,通过HiveServer或者HiveServer2,客户端可以在不启动CLI的情况下对Hive中的数据进行操作,两者都允许远程客户端使用多种编程语言如Java、Python向Hive提交请求,取回结果 使用jdbc协议连接hive的thriftserver服务器

  2. 可以实现远程访问

  3. 可以通过命令链接多个hive

2.ThiftServer启动

  1. 启动hive的thriftserver

    1. #cd /soft/hive/bin/
    2. #./hiveserver2
    3. #默认启动非后台启动 需要开另外一个终端
    4. #端口号为10000
  2. 使用beeline连接hiveserver2服务器,client端命令行程序

    1. #beeline
    2. Beeline version 2.1.1 by Apache Hive
    3. #输入要链接的服务
    4. beeline> !connect jdbc:hive2://localhost:10000
    5. SLF4J: Class path contains multiple SLF4J bindings.
    6. 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]
    7. 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]
    8. SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    9. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
    10. Connecting to jdbc:hive2://localhost:10000
    11. Enter username for jdbc:hive2://localhost:10000:
    12. Enter password for jdbc:hive2://localhost:10000:
    13. Connected to: Apache Hive (version 2.1.1)
    14. Driver: Hive JDBC (version 2.1.1)
    15. 17/07/13 10:31:00 [main]: WARN jdbc.HiveConnection: Request to set autoCommit to false; Hive does not support autoCommit=false.
    16. Transaction isolation: TRANSACTION_REPEATABLE_READ
    17. 0: jdbc:hive2://localhost:10000>

3.beeline的基本用法

  1. 查看数据库

    1. 0: jdbc:hive2://localhost:10000> show databases;
    2. +----------------+--+
    3. | database_name |
    4. +----------------+--+
    5. | default |
    6. | liuyao |
    7. +----------------+--+
    8. 2 rows selected (1.485 seconds)
  2. 查看表

    1. 0: jdbc:hive2://localhost:10000> use liuyao;
    2. No rows affected (0.123 seconds)
    3. 0: jdbc:hive2://localhost:10000> show tables;
    4. +-----------+--+
    5. | tab_name |
    6. +-----------+--+
    7. | test |
    8. +-----------+--+
    9. 1 row selected (0.283 seconds)
    10. 或者使用
    11. 0: jdbc:hive2://localhost:10000> !tables
    12. +------------+--------------+-------------+-------------+----------+-----------+-------------+------------+----------------------------+-----------------+--+
    13. | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | TYPE_CAT | TYPE_SCHEM | TYPE_NAME | SELF_REFERENCING_COL_NAME | REF_GENERATION |
    14. +------------+--------------+-------------+-------------+----------+-----------+-------------+------------+----------------------------+-----------------+--+
    15. | | liuyao | test | TABLE | NULL | NULL | NULL | NULL | NULL | NULL |
    16. +------------+--------------+-------------+-------------+----------+-----------+-------------+------------+----------------------------+-----------------+--+
    17. 0: jdbc:hive2://localhost:10000>
  3. 创建表

    1. CREATE TABLE emp0
    2. (
    3. name string,
    4. arr ARRAY<string>,
    5. stru1 STRUCT<sex:string,age:int>,
    6. map1 MAP<string,int>,
    7. map2 MAP<string,ARRAY<string>>
    8. )
    9. ;
  4. 查看表结构

    1. 0: jdbc:hive2://localhost:10000> desc emp0;
    2. +-----------+-----------------------------+----------+--+
    3. | col_name | data_type | comment |
    4. +-----------+-----------------------------+----------+--+
    5. | name | string | |
    6. | arr | array<string> | |
    7. | stru1 | struct<sex:string,age:int> | |
    8. | map1 | map<string,int> | |
    9. | map2 | map<string,array<string>> | |
    10. +-----------+-----------------------------+----------+--+
    11. 5 rows selected (0.296 seconds)
  5. 删除表

    1. 0: jdbc:hive2://localhost:10000> use default;
    2. No rows affected (0.092 seconds)
    3. 0: jdbc:hive2://localhost:10000> drop table emp0;
    4. No rows affected (1.823 seconds)

4. 数据导入查询等演示

  1. 生成数据

    1. #vim /root/hive.data
    2. 放入以下数据
    3. Michael|Montreal,Toronto|Male,30|DB:80|Product:Developer^DLead
    4. Will|Montreal|Male,35|Perl:85|Product:Lead,Test:Lead
    5. Shelley|New York|Female,27|Python:80|Test:Lead,COE:Architect
    6. Lucy|Vancouver|Female,57|Sales:89,HR:94|Sales:Lead
  2. 创建表

    1. CREATE TABLE emp1
    2. (
    3. name string,
    4. arr ARRAY<string>,
    5. stru1 STRUCT<sex:string,age:int>,
    6. map1 MAP<string,int>,
    7. map2 MAP<string,ARRAY<string>>
    8. )
    9. ROW FORMAT DELIMITED
    10. FIELDS TERMINATED BY '|' //字段分隔符
    11. COLLECTION ITEMS TERMINATED BY ','
    12. MAP KEYS TERMINATED BY ':' //map的kv之间分隔符
    13. LINES TERMINATED BY '\n'; //集合元素分隔符
  3. 导入数据

    1. 如果数据在本地用
    2. 0: jdbc:hive2://localhost:10000> load data local inpath '/root/hive.data' into table emp0;
    3. No rows affected (0.956 seconds)
    4. 0: jdbc:hive2://localhost:10000>
  4. 查询

    1. 0: jdbc:hive2://localhost:10000> select * from emp0;
    2. +------------+-------------------------+----------------------------+-----------------------+----------------------------------------+--+
    3. | emp0.name | emp0.arr | emp0.stru1 | emp0.map1 | emp0.map2 |
    4. +------------+-------------------------+----------------------------+-----------------------+----------------------------------------+--+
    5. | Michael | ["Montreal","Toronto"] | {"sex":"Male","age":30} | {"DB":80} | {"Product":["Developer^DLead"]} |
    6. | Will | ["Montreal"] | {"sex":"Male","age":35} | {"Perl":85} | {"Product":["Lead"],"Test":["Lead"]} |
    7. | Shelley | ["New York"] | {"sex":"Female","age":27} | {"Python":80} | {"Test":["Lead"],"COE":["Architect"]} |
    8. | Lucy | ["Vancouver"] | {"sex":"Female","age":57} | {"Sales":89,"HR":94} | {"Sales":["Lead"]} |
    9. | | NULL | NULL | NULL | NULL |
    10. +------------+-------------------------+----------------------------+-----------------------+----------------------------------------+--+
    11. 5 rows selected (1.049 seconds)
    12. 0: jdbc:hive2://localhost:10000> select arr[0] from emp0;
    13. +------------+--+
    14. | c0 |
    15. +------------+--+
    16. | Montreal |
    17. | Montreal |
    18. | New York |
    19. | Vancouver |
    20. | NULL |
    21. +------------+--+ 5 rows selected (0.656 seconds)
    22. 0: jdbc:hive2://localhost:10000> select stru1 from emp0;
    23. +----------------------------+--+
    24. | stru1 |
    25. +----------------------------+--+
    26. | {"sex":"Male","age":30} |
    27. | {"sex":"Male","age":35} |
    28. | {"sex":"Female","age":27} |
    29. | {"sex":"Female","age":57} |
    30. | NULL |
    31. +----------------------------+--+
    32. 5 rows selected (0.193 seconds)
    33. 0: jdbc:hive2://localhost:10000> select map1 from emp0;
    34. +-----------------------+--+
    35. | map1 |
    36. +-----------------------+--+
    37. | {"DB":80} |
    38. | {"Perl":85} |
    39. | {"Python":80} |
    40. | {"Sales":89,"HR":94} |
    41. | NULL |
    42. +-----------------------+--+
    43. 5 rows selected (0.216 seconds)
    44. 0: jdbc:hive2://localhost:10000> select map1["DB"] from emp0;
    45. +-------+--+
    46. | c0 |
    47. +-------+--+
    48. | 80 |
    49. | NULL |
    50. | NULL |
    51. | NULL |
    52. | NULL |
    53. +-------+--+
    54. 5 rows selected (0.249 seconds)

5.使用api编程方式连接到thriftserver服务器

  1. public class TestCURD {
  2. @Test
  3. public void select() throws Exception{
  4. String driverClass = "org.apache.hive.jdbc.HiveDriver";
  5. String url = "jdbc:hive2://192.168.10.145:10000/liuyao";
  6. Class.forName(driverClass);
  7. Connection connection = DriverManager.getConnection(url);
  8. System.out.println(connection);
  9. Statement statement = connection.createStatement();
  10. ResultSet rs = statement.executeQuery("SELECT * FROM emp0");
  11. while (rs.next()){
  12. int id = rs.getInt(1);
  13. String name = rs.getString(2);
  14. System.out.println(id + "," + name);
  15. }
  16. rs.close();
  17. connection.close();
  18. }
  19. }

3.hive的thriftserver服务的更多相关文章

  1. SparkSQL ThriftServer服务的使用和程序中JDBC的连接

    SparkSQL ThriftServer服务的使用和程序中JDBC的连接 此时要注意版本问题,我第一次用的是hive2.1.1的,因为要用sparksql的hive服务,但是sparksql默认的是 ...

  2. 037 SparkSQL ThriftServer服务的使用和程序中JDBC的连接

    一:使用 1.实质 提供JDBC/ODBC连接的服务 服务运行方式是一个Spark的应用程序,只是这个应用程序支持JDBC/ODBC的连接, 所以:可以通过应用的4040页面来进行查看操作 2.启动服 ...

  3. Hive环境搭建和SparkSql整合

    一.搭建准备环境 在搭建Hive和SparkSql进行整合之前,首先需要搭建完成HDFS和Spark相关环境 这里使用Hive和Spark进行整合的目的主要是: 1.使用Hive对SparkSql中产 ...

  4. 大数据学习(12)—— Hive Server2服务

    什么是Hive Server2 上一篇我们启动了hive --service metastore服务,可以通过命令行来访问hive服务,但是它不支持多客户端同时访问,参见官网说明:HiveServer ...

  5. 【自动化】基于Spark streaming的SQL服务实时自动化运维

    设计背景 spark thriftserver目前线上有10个实例,以往通过监控端口存活的方式很不准确,当出故障时进程不退出情况很多,而手动去查看日志再重启处理服务这个过程很低效,故设计利用Spark ...

  6. 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 ...

  7. Hadoop学习笔记—17.Hive框架学习

    一.Hive:一个牛逼的数据仓库 1.1 神马是Hive? Hive 是建立在 Hadoop 基础上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储. ...

  8. 附录C 编译安装Hive

    如果需要直接安装Hive,可以跳过编译步骤,从Hive的官网下载编译好的安装包,下载地址为http://hive.apache.org/downloads.html . C.1  编译Hive C.1 ...

  9. Hive Streaming 追加 ORC 文件

    1.概述 在存储业务数据的时候,随着业务的增长,Hive 表存储在 HDFS 的上的数据会随时间的增加而增加,而以 Text 文本格式存储在 HDFS 上,所消耗的容量资源巨大.那么,我们需要有一种方 ...

随机推荐

  1. NOIP模拟赛D2T1自己的解题思路

    T1题目在此: 数轴上有n个球,每个球直径为1,第 ii 个球的左端点为pi即占据了数轴上[pi,pi+1][pi,pi+1]).在 P位置有一堵墙.有q个操作,每次要么以x位置为左端点放一个新球(如 ...

  2. thinkPHP写txt日志文件

     file_put_contents(DATA_PATH.'文件名.txt', '收到请求:' . date('Y-m-d H:i:s') . PHP_EOL . '通知信息:' . $显示的变量名. ...

  3. Leecode刷题之旅-C语言/python-112 路径总和

    /* * @lc app=leetcode.cn id=112 lang=c * * [112] 路径总和 * * https://leetcode-cn.com/problems/path-sum/ ...

  4. java->php之在线子域名查询-接口光速版

    因为不懂java,所以 用php重写了大佬的 在线子域名查询-接口光速版 http://sbd.ximcx.cn/  这是大佬的 然后 改一下 ,用php 其实就是改了几行代码而已,jquery和aj ...

  5. 20155212 ch02 课下作业

    20155212 ch02 课下作业 T1 题目 参考附图代码,编写一个程序 "week0601学号.c",判断一下你的电脑是大端还是小端 相关知识 小端法:最低有效字节在最前面 ...

  6. 20155236 《Java程序设计》实验三(敏捷开发与XP实践)实验报告

    20155236 <Java程序设计>实验三(敏捷开发与XP实践)实验报告 一.实验内容及步骤 XP基础 XP核心实践 相关工具 实验内容 1.在IDEA中使用工具(Code->Re ...

  7. 20155338 2016-2017-2《Java程序设计》第1周学习总结

    20155338 2016-2017-2<Java程序设计>第1周学习总结 了解成绩构成 成绩构成:100分=翻转课堂考核12次(512 = 60)+ 实验5次(3 5 =15)+ 团队项 ...

  8. hasOwnProperty()函数

    hasOwnProperty()函数的返回值为Boolean类型.如果对象object具有名称为propertyName的属性,则返回true,否则返回false 例子: function Site( ...

  9. DSP28335声音降噪(未完成)

    1. 确定使用的模块是Webrtc-NS,采集声音的芯片TLV32AIC23,实际测试发现Webrtc-NS无法使用,所以改成FIR滤波器. 从时域特性上来看,数字滤波器还可以分为有限冲激响应数字滤波 ...

  10. Hadoop NameNode HA 和 ResourceManager HA

    1.集群规划 1.1 规划说明 hadoop1 cluster1 nameNode hadoop2 cluster1 nameNodeStandby ZooKeeper ResourceManager ...