当前位置: 首页 > news >正文

hive库操作示例

hive库操作示例

1、常规表

创建数据库

CREATE DATABASE mydatabase;

使用数据库

USE mydatabase;

创建表

CREATE TABLE mytable (id INT,name STRING,age INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

插入数据

INSERT INTO TABLE mytable VALUES (1, 'John', 25);
INSERT INTO TABLE mytable VALUES (2, 'Alice', 30);

插入报错

[42000][10797] COMPILE FAILED: Semantic error: [Error 10797] Only allow to single insert into Hyperbase/ES/Transaction Orc
单行插入同样报错,下述分区表、分桶表均存在相同报错;

正确插入示例

INSERT INTO TABLE mytable
SELECT * FROM(VALUES(1, 'John', 25),(2, 'Alice', 30)) AS (id, name,age)

查询数据

SELECT * FROM mytable;

更新数据

UPDATE mytable SET age = 26 WHERE id = 1;

删除数据

DELETE FROM mytable WHERE id = 2;

更新删除报错

COMPILE FAILED: Semantic error[40005]: Update/Delete/Merge operations cannot apply on views or non-transactional inceptor tables

更新/删除操作

创建临时表

创建新的空白表,用于存储更新后的数据。

CREATE TABLE newtable (id INT,name STRING,age INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
插入数据至临时表

使用INSERT OVERWRITE语句将更新后的数据插入到新表中。

INSERT OVERWRITE TABLE newtable
SELECT id, name, CASE WHEN id = 1 THEN 26 ELSE age END AS age
FROM mytable;
临时表重命名

如果需要,可以将新表重命名为原始表的名称。

ALTER TABLE newtable RENAME TO mytable;

删除表

DROP TABLE mytable;

2、分区表

创建分区表

首先,我们需要创建一个分区表。以下是一个创建分区表的示例:

CREATE TABLE my_table (col1 INT,col2 STRING
)
PARTITIONED BY (partition_col INT, partition_key STRING);

上述示例创建了一个名为 my_table 的表,它有两列 col1col2,并且定义了两个分区列 partition_colpartition_key

添加分区表数据

接下来,我们需要向分区表中添加数据。以下是向分区表添加数据的示例:

INSERT INTO TABLE my_table PARTITION (partition_col=1, partition_key='key1') VALUES (10, 'value1');
INSERT INTO TABLE my_table PARTITION (partition_col=2, partition_key='key2') VALUES (20, 'value2');

上述示例向 my_table 表的两个分区中插入了数据。

删除分区

如果你想删除分区,可以使用以下语法:

ALTER TABLE my_table DROP PARTITION (partition_col=1, partition_key='key1');

上述示例删除了 my_table 表中的一个特定分区。

查询分区表

要查询分区表,可以使用带有 WHERE 子句的 SELECT 语句来过滤特定的分区。例如:

SELECT * FROM my_table WHERE partition_col = 2;

上述示例将返回 my_table 表中 partition_col2 的所有数据。

关于更新、删除

如果你使用的是HyperbaseESTransaction Orc存储引擎,你将无法直接执行更新和删除操作。这些存储引擎主要用于高性能的数据写入,并且对数据的修改操作是受限的。

如果你需要更新或删除数据,你可能需要考虑使用其他类型的存储引擎,比如传统的关系型数据库(如MySQLPostgreSQL)或类似Hive的数据仓库。

分区表数据插入

正确插入示例

INSERT INTO TABLE my_table
PARTITION (partition_col=1, partition_key=‘key1’)
SELECT * FROM (VALUES (10, ‘value1’)) AS t (col1, col2);

3、分桶表

单从概念上理解分桶表可能会比较晦涩,其实和分区一样,分桶这个概念同样不是 Hive 独有的,对于 Java 开发人员而言,这可能是一个每天都会用到的概念,因为 Hive 中的分桶概念和 Java 数据结构中的 HashMap 的分桶概念是一致的。

方案一

创建分桶表
SET transaction.type=inceptor;CREATE TABLE student (name STRING,age INT)CLUSTERED BY (age)INTO 100 BUCKETS STORED AS ORCTBLPROPERTIES ("transactional"="true");
数据插入
INSERT INTO student(name,age) VALUES ('xiaoming', 12);

方案二

创建分桶表
CREATE TABLE student (name STRING,age INT)CLUSTERED BY (age)INTO 100 BUCKETS;
数据插入
INSERT INTO student
SELECT * FROM (VALUES ('xiaofang', 12)) AS t (col1, col2);
多条插入
INSERT INTO student
SELECT * FROM (VALUES ('xiaofang', 12),('xiaoguang', 13)) AS t (col1, col2);
分桶表数据删除

创建一个临时表,用于存储保留的分桶数据

CREATE TABLE temp_table AS SELECT * FROM my_bucketed_table WHERE bucket_id <> 12; 
-- 此处的 bucket_id  指代 `age`

删除原始的分桶表

DROP TABLE my_bucketed_table;

将临时表重命名为原始的分桶表

ALTER TABLE temp_table RENAME TO my_bucketed_table;

4、java客户端采用jdbc操作hive库

代码示例

package com.xxx.demo;import java.sql.*;public class HiveExample {// Hive连接信息private static final String HIVE_DRIVER = "org.apache.hive.jdbc.HiveDriver";private static final String HIVE_URL = "jdbc:hive2://localhost:10000/default"; // default -> your_database_nameprivate static final String HIVE_USER = "your_username";private static final String HIVE_PASSWORD = "your_password";// 查询示例public static void selectExample() {try {// 加载Hive驱动类Class.forName(HIVE_DRIVER);// 建立Hive连接Connection conn = DriverManager.getConnection(HIVE_URL, HIVE_USER, HIVE_PASSWORD);// 创建StatementStatement stmt = conn.createStatement();// 执行查询语句String sql = "SELECT * FROM your_table";ResultSet rs = stmt.executeQuery(sql);// 处理查询结果while (rs.next()) {// 根据列名获取字段值,例如:String column1Value = rs.getString("column1");int column2Value = rs.getInt("column2");// 其他字段依此类推System.out.println(column1Value + ", " + column2Value);}// 关闭连接和释放资源rs.close();stmt.close();conn.close();} catch (Exception e) {e.printStackTrace();}}// 插入示例public static void insertExample() {try {// 加载Hive驱动类Class.forName(HIVE_DRIVER);// 建立Hive连接Connection conn = DriverManager.getConnection(HIVE_URL, HIVE_USER, HIVE_PASSWORD);// 创建PreparedStatementString sql = "INSERT INTO your_table SELECT * FROM (VALUES" + " (?, ?))";PreparedStatement pstmt = conn.prepareStatement(sql);// 设置参数pstmt.setString(1, "value1");pstmt.setInt(2, 123);// 其他参数依此类推// 执行插入操作pstmt.executeUpdate();// 关闭连接和释放资源pstmt.close();conn.close();} catch (Exception e) {e.printStackTrace();}}// 更新示例public static void updateExample() {try {// 加载Hive驱动类Class.forName(HIVE_DRIVER);// 建立Hive连接Connection conn = DriverManager.getConnection(HIVE_URL, HIVE_USER, HIVE_PASSWORD);// 创建StatementStatement stmt = conn.createStatement();// 执行更新语句String sql = "UPDATE your_table SET column1 = 'new_value' WHERE condition";int rowsAffected = stmt.executeUpdate(sql);System.out.println("Rows affected: " + rowsAffected);// 关闭连接和释放资源stmt.close();conn.close();} catch (Exception e) {e.printStackTrace();}}// 删除示例public static void deleteExample() {try {// 加载Hive驱动类Class.forName(HIVE_DRIVER);// 建立Hive连接Connection conn = DriverManager.getConnection(HIVE_URL, HIVE_USER, HIVE_PASSWORD);// 创建StatementStatement stmt = conn.createStatement();// 执行删除语句String sql = "DELETE FROM your_table WHERE condition";int rowsAffected = stmt.executeUpdate(sql);System.out.println("Rows affected: " + rowsAffected);// 关闭连接和释放资源stmt.close();conn.close();} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {selectExample();insertExample();updateExample();deleteExample();}
}

相关文章:

hive库操作示例

hive库操作示例 1、常规表 创建数据库 CREATE DATABASE mydatabase;使用数据库 USE mydatabase;创建表 CREATE TABLE mytable (id INT,name STRING,age INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY , STORED AS TEXTFILE;插入数据 INSERT INTO TABLE mytable VALUE…...

LeetCode第 N 个泰波那契数 (认识动态规划)

认识动态规划 编写代码代码空间优化 链接: 第 N 个泰波那契数 编写代码 class Solution { public:int tribonacci(int n) {if(n 0){return 0;}else{if(n 1 || n 2)return 1;}vector<int> dp(n 1);dp[0] 0;dp[1] 1;dp[2] 1;for(int i 3;i < n;i){dp[i] dp[i-3]…...

线程安全问题(内存可见性)

导致的原因 内存可见性问题的出现主要是因为编译器优化多线程导致的 示例代码 package 线程安全问题;import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User: wuyulin* Date: 2023-07-26* Time: 13:49*/ public class Demo2 {private volatile sta…...

STM32MX配置EEPROM(AT24C02)------保姆级教程

———————————————————————————————————— ⏩ 大家好哇&#xff01;我是小光&#xff0c;嵌入式爱好者&#xff0c;一个想要成为系统架构师的大三学生。 ⏩最近在开发一个STM32H723ZGT6的板子&#xff0c;使用STM32CUBEMX做了很多驱动&#x…...

微信小程序 样式和全局配置

WXSS wxss 把屏幕分为750个物理像素&#xff0c;大屏大&#xff0c;小屏小&#xff0c;随着设备不一致自动适配 推荐使用iPhone6作为标准&#xff0c;1个rpx 0.5个px&#xff0c;把px乘以2就是rpx的参数 import 导入外部样式表 import /common/common.wxss 样式 权重一…...

一.初识C语言

一.初识C语言 C语言标准规定&#xff1a; sizeof(long)>sizeof(int)就可以了变量要定义在当前代码块的最前面 #defin _CRT_SECURE_NO_WARNINGS 1#include <stdio.h> //包含一个stdio.h的文件 std-标准standard input outputint main() //主函数-程序的入口-main函数…...

filebeat到kafka示例

docker run -d \ --namefilebeat_7.14_0 \ #filebeat名称 --userroot \ --volume"/data/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml" \ #映射filebeat.yml配置 --volume"/data/filebeat/log:/usr/share/filebeat/log" \…...

AlmaLinux系统下的Zabbix汉化

我安装的是zabbix下的虚拟机&#xff0c;安装完成后&#xff0c;直接可以打开网站了&#xff0c;但是界面是英文&#xff0c;看了设置&#xff0c;没有中文选项&#xff0c;就需要在系统中安装中文字符集了。 # locale -a #查看里面没有zh_CN之类的项 # dnf install -…...

【网络编程】(TCP流套接字编程 ServerSocket API Socket API 手写TCP版本的回显服务器 TCP中的长短连接)

文章目录 网络编程TCP流套接字编程ServerSocket APISocket APITCP中的长短连接手写TCP版本的回显服务器 网络编程 TCP流套接字编程 TCP提供的API主要是两个类:ServerSocket 和 Socket . TCP不需要一个类来表示"TCP数据报"因为TCP不是以数据报为单位进行传输的.是以…...

企业级PaaS低代码快开平台源码,基于 Salesforce Platform 的开源替代方案

PaaS低代码快开平台是一种快速开发应用系统的工具&#xff0c;用户通过少量代码甚至不写代码就可以快速构建出各种应用系统。 随着信息化技术的发展&#xff0c;企业对信息化开发的需求正在逐渐改变&#xff0c;传统的定制开发已经无法满足企业需求。低代码开发平台&#xff0…...

【LeetCode】72.编辑距离

题目 给你两个单词 word1 和 word2&#xff0c; 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作&#xff1a; 插入一个字符删除一个字符替换一个字符 示例 1&#xff1a; 输入&#xff1a;word1 "horse", word2 "…...

大模型,开源干不掉闭源

开源大模型对闭源大模型的冲击&#xff0c;变得非常猛烈。 今年3月&#xff0c;Meta发布了Llama&#xff08;羊驼&#xff09;&#xff0c;很快成为AI社区内最强大的开源大模型&#xff0c;也是许多模型的基座模型。有人戏称&#xff0c;当前的大模型集群&#xff0c;就是一堆各…...

Redis 九种数据类型的基本操作

一、redis9种数据类型的基本操作 ①key操作 #查找所有的key 127.0.0.1:6379> keys * 1) "pop" 2) "mylist" 3) "lpl" 4) "myset" #设置key的过期时间 返回1表示执行成功&#xff0c;0表示失败&#xff0c;出现问题 127.0.0.1:6379…...

爬取微博热搜榜并进行数据分析

设计方案 爬虫爬取的内容 &#xff1a;爬取微博热搜榜数据。 网络爬虫设计方案概述 用requests库访问页面用get方法获取页面资源&#xff0c;登录页面对页面HTML进行分析&#xff0c;用beautifulsoup库获取并提取自己所需要的信息。再讲数据保存到CSV文件中&#xff0c;进行…...

基于深度神经网络的肺炎检测系统实现

一、说在前面 使用AI进行新冠肺炎图像诊断可以加快病例的诊断速度&#xff0c;提高诊断的准确性&#xff0c;并在大规模筛查中发挥重要作用&#xff0c;从而更好地控制和管理这一流行病。然而&#xff0c;需要强调的是&#xff0c;AI技术仅作为辅助手段&#xff0c;最终的诊断决…...

C# LINQ和Lambda表达式对照

C# LINQ和Lambda表达式对照 1. 基本查询语句 Linq语法&#xff1a; var datafrom a in db.Areas select a ; Lamda语法&#xff1a; var datadb.Areas; sql语法&#xff1a; SELECT * FROM Areas2. 简单的WHERE语句 Linq语法&#xff1a; var datafrom a in db.orderI…...

二、SQL-6.DCL-1).用户管理

一、DCL介绍 Data Control Language 数据控制语言 用来管理数据库 用户、控制数据库的 访问权限。 二、语法 1、管理用户 管理用户在系统数据库mysql中的user表中创建、删除一个用户&#xff0c;需要Host&#xff08;主机名&#xff09;和User&#xff08;用户名&#xff0…...

ElasticSearch学习--数据聚合

介绍 数据聚合可以帮助我们对海量的数据进行统计分析&#xff0c;如果结合kibana&#xff0c;我们还能形成可视化的图形报表。自动补全可以根据用户输入的部分关键字去自动补全和提示。数据同步可以帮助我们解决es和mysql的数据一致性问题。集群可以帮助我们了解结构和不同节点…...

PostMan+Jmeter工具介绍及安装

目录 一、PostMan介绍​编辑 二、下载安装 三、Postman与Jmeter的区别 一、开发语言区别&#xff1a; 二、使用范围区别&#xff1a; 三、使用区别&#xff1a; 四、Jmeter安装 附一个详细的Jmeter按照新手使用教程&#xff0c;感谢作者&#xff0c;亲测有效。 五、Jme…...

AutoSAR系列讲解(实践篇)7.4-实验:配置SWCRTE

注意: 实验篇是重点,有条件的同学最好跟着做一遍,然后回头对照着7.1-7.3理解其配置的目的和意义。实验下篇将在7.7节中继续做 一、实验概览 1、实验目的 通过本次实验,主要是让大家对Dev的配置有一个全流程的学习。这里会用到前两节的内容,将其串联起来,让大家能完整的…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...