当前位置: 首页 > 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的配置有一个全流程的学习。这里会用到前两节的内容,将其串联起来,让大家能完整的…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...