hive2

JDBC六步

1注册驱动

2建立连接

3建立操作对象

4执行SQL

5处理查询结果集

6关闭资源

import java.sql.*;

public class JdbcExample {
    public static void main(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:表示上传到指定分区

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/21f597b868.html