0


hive2

JDBC六步
1注册驱动
2建立连接
3建立操作对象
4执行SQL
5处理查询结果集
6关闭资源

importjava.sql.*;publicclassJdbcExample{publicstaticvoidmain(String[] args){try{// 加载数据库驱动程序Class.forName("com.mysql.cj.jdbc.Driver");// 建立连接Connection connection =DriverManager.getConnection("jdbc:mysql://localhost:3306/yourdatabase","username","password");// 创建Statement对象Statement statement = connection.createStatement();// 执行查询ResultSet resultSet = statement.executeQuery("SELECT * FROM yourtable");// 处理查询结果while(resultSet.next()){System.out.println(resultSet.getString("column1")+", "+
                                   resultSet.getString("column2"));}// 关闭资源
            resultSet.close();
            statement.close();
            connection.close();}catch(ClassNotFoundException|SQLException e){
            e.printStackTrace();}}}

建表语句是在往MySQL写元数据,主要是一个映射关系

mysql支持多客户端访问

shell编程
0标准输入(键盘)
1标准输出
2错误输出

count(*)不走mr,所以可能查询后是0
insert命令改变元数据和数据
put仅仅改变数据
load(比put多修改一个元数据)只改变一个,numFiles0->1,numRows0

可以使用 CAST 操作显示进行数据类型转换
例如 CAST(‘1’ AS INT)将把字符串’1’ 转换成整数 1;如果强制类型转换失败,如执行
CAST(‘X’ AS INT),表达式返回空值 NULL。

字段解释:
row format delimited fields terminated by ‘,’ – 列分隔符
collection items terminated by ‘_’ --MAP STRUCT 和 ARRAY 的分隔符(数据分割符号)
map keys terminated by ‘:’ – MAP 中的 key 与 value 的分隔符
lines terminated by ‘\n’; – 行分隔符
在这里插入图片描述

在这里插入图片描述
DDL 数据定义
创建数据库
CREATE DATABASE [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, …)];

1)显示数据库
hive> show databases;
2)过滤显示查询的数据库
hive> show databases like ‘db_hive*’;
OK
db_hive
db_hive_1

显示数据库信息
hive> desc database db_hive;

显示数据库详细信息,extended
hive> desc database extended db_hive;

切换当前数据库
hive (default)> use db_hive;

删除空数据库
hive>drop database db_hive2;

如果数据库不为空,可以采用 cascade 命令,强制删除

hive> drop database db_hive cascade;

字段解释说明
(1)CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;
用户可以用 IF NOT EXISTS 选项来忽略这个异常。
(2)EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时可以指定一个指向实
际数据的路径(LOCATION),在删除表的时候,内部表的元数据和数据会被一起删除,而外
部表只删除元数据,不删除数据。
(3)COMMENT:为表和列添加注释。
(4)PARTITIONED BY 创建分区表
(5)CLUSTERED BY 创建分桶表
(6)SORTED BY 不常用,对桶中的一个或多个列另外排序
(7)ROW FORMAT
DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMINATED BY char]
[MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
| SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value,
property_name=property_value, …)]
用户在建表的时候可以自定义 SerDe 或者使用自带的 SerDe。如果没有指定 ROW
FORMAT 或者 ROW FORMAT DELIMITED,将会使用自带的 SerDe。在建表的时候,用户还需
要为表指定列,用户在指定表的列的同时也会指定自定义的 SerDe,Hive 通过 SerDe 确定表
的具体的列的数据。
SerDe 是 Serialize/Deserilize 的简称, hive 使用 Serde 进行行对象的序列与反序列化。
(8)STORED AS 指定存储文件类型
常用的存储文件类型:SEQUENCEFILE(二进制序列文件)、TEXTFILE(文本)、RCFILE(列
式存储格式文件)
如果文件数据是纯文本,可以使用STORED AS TEXTFILE。如果数据需要压缩,使用 STORED
AS SEQUENCEFILE。
(9)LOCATION :指定表在 HDFS 上的存储位置。
(10)AS:后跟查询语句,根据查询结果创建表。
(11)LIKE 允许用户复制现有的表结构,但是不复制数据。

外部表,Hive 并非认为其完全拥有这份数据。删除该表并不会删除掉这
份数据,不过描述表的元数据信息会被删除掉。

管理表与外部表的互相转换
(1)查询表的类型
hive (default)> desc formatted student2;
Table Type: MANAGED_TABLE
(2)修改内部表 student2 为外部表
alter table student2 set tblproperties(‘EXTERNAL’=‘TRUE’);
(3)查询表的类型
hive (default)> desc formatted student2;
Table Type: EXTERNAL_TABLE
(4)修改外部表 student2 为内部表
alter table student2 set tblproperties(‘EXTERNAL’=‘FALSE’);
(5)查询表的类型
hive (default)> desc formatted student2;
Table Type: MANAGED_TABLE
注意:(‘EXTERNAL’=‘TRUE’)和(‘EXTERNAL’=‘FALSE’)为固定写法,区分大小写!

DML 数据操作
向表中装载数据(Load)
1)语法
hive> load data [local] inpath ‘数据的 path’ [overwrite] into table
student [partition (partcol1=val1,…)];
(1)load data:表示加载数据
(2)local:表示从本地加载数据到 hive 表;否则从 HDFS 加载数据到 hive 表
(3)inpath:表示加载数据的路径
(4)overwrite:表示覆盖表中已有数据,否则表示追加
(5)into table:表示加载到哪张表
(6)student:表示具体的表
(7)partition:表示上传到指定分区

标签: hive

本文转载自: https://blog.csdn.net/Z2475269074/article/details/135004255
版权归原作者 Z2475269074 所有, 如有侵权,请联系我们删除。

“hive2”的评论:

还没有评论