Hive Sql优化之一次from查询多次insert into操作

这篇具有很好参考价值的文章主要介绍了Hive Sql优化之一次from查询多次insert into操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一次from查询多次insert into操作

例:统计字段空值率

优化点:一次map多个reduce,有效节省了map操作
流程如下:
1.创建表;
2.插入数据;
3.参照下面语句;文章来源地址https://www.toymoban.com/news/detail-585151.html

--创建student表
CREATE EXTERNAL TABLE IF NOT EXISTS STUDENT(
	s_no string comment '学号',
	s_name string comment '姓名',
	s_birth string comment '生日',
	s_age bigint comment '年龄',
	s_sex string comment '性别',
)
--创建统计空置率表
CREATE EXTERNAL TABLE IF NOT EXISTS STUDENT_COUNT(
ID STRING COMMENT  '字段名称',
COUNT STRING COMMENT  '数据累加'
NULL_RATE  DOUBLE  '空值率'
)
--清空表数据
truncate table student_count;
--插入数据
--年龄大于16学生的姓名和生日的空置率;
from (select * from student where s_age > 16) a
insert into student_count select 's_name ' id ,count(1) count,count(s_name )/count(1) as null_rate
insert into student_count select 's_birth ' id ,count(1) count,count(s_birth )/count(1) as null_rate;

使用grouping sets代替union的SQL优化

--grouping sets等操作时,用union关键词来构建多维统计的方式
--改写前的代码段
select * from(
select s_age,s_sex,count(1) num
from student_tb_orc
group by s_age,s_sex
union all
select s_age,null s_sex,count(1) num
from student_tb_orc
group by s_age
) a
--改写后的代码段
select s_age,s_sex,count(1) num
from student_tb_orc
group by s_age,s_sex
grouping sets((s_age),(s_age,s_sex))

到了这里,关于Hive Sql优化之一次from查询多次insert into操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • insert into select 语法使用

    INSERT INTO SELECT语句:从一个表复制数据,然后把数据插入到一个已存在的表中。 将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中, 这时候我们就要使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了。 1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(fie

    2024年02月16日
    浏览(59)
  • MyBatis案例 | 使用映射配置文件实现CRUD操作——动态SQL优化条件查询

    本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址:🔥JavaWeb Java入门篇: 🔥Java基础学习篇 Java进阶学习篇(持续更新中):🔑Java进阶学习篇 本系列文章会将讲述有关

    2024年02月02日
    浏览(87)
  • MySQL 中 INSERT INTO 的使用详解

    MySQL 是一个非常流行的关系型数据库管理系统,具有高效和可扩展性等特点。在 MySQL 数据库中,INSERT INTO 是一种用于将新行插入表中的 SQL 命令。它是 MySQL 最基本、最常用的语句之一,也是许多应用程序的核心功能之一。本文将介绍如何正确地使用 INSERT INTO,以及如何处理异

    2024年02月15日
    浏览(57)
  • 第3.1章:StarRocks数据导入--Insert into

    Insert Into是我们在MySQL中常用的导入方式,StarRocks同样也支持使用Insert into的方式进行数据导入,并且每次insert into操作都是一次完整的导入事务。 在StarRocks中,Insert的语法和MySQL等数据库的语法类似,具体可以参考官网文档: Insert Into 导入 @ InsertInto @ StarRocks Docs https://docs.s

    2024年02月08日
    浏览(48)
  • DBeaver同时执行多条insert into报错处理

    之前使用的数据库连接软件Navicat的破解版,后来公司要求不可以使用破解版的Navicat,所以就换了DBeaver。 这是一个很不错的软件,免费,而且可以连接不同类型的数据库,MySQL、Oracle、hive、SQLserver等都可以使用,很方便也很良心,但是在使用的过程中发现了一个问题,DBeav

    2024年02月11日
    浏览(54)
  • 第3.1章:StarRocks数据导入——Insert into 同步模式

       在StarRocks中,insert的语法和mysql等数据库的语法类似,并且每次insert into操作都是一次完整的导入事务。  主要的 insertInto 命令包含以下两种: insert into tbl select ... insert into tbl (col1, col2, ...) values (1, 2, ...), (1,3, ...);   其中第二种命令仅用于demo,不要使用在测试或生产环境

    2024年02月21日
    浏览(50)
  • Apache Doris (二十三) :Doris 数据导入(一)Insert Into

    目录 1. 语法及参数 2. 案例 ​​​​3. 注意事项 3.1. 关于插入数据量

    2024年02月13日
    浏览(57)
  • openGauss学习笔记-11 openGauss 简单数据管理-INSERT INTO语句

    在创建一个表后,表中并没有数据,使用这个表之前,需要向表中插入数据。INSERT INTO语句用于向表中插入新记录。该语句可以插入一行数据也可以同时插入多行数据。 11.1 语法格式 11.2 参数说明 table_name 要插入数据的目标表名。 取值范围:已存在的表名。 column_name 目标表中

    2024年02月17日
    浏览(48)
  • 大数据:hive数据库的操作语法,数据表,内部表,external外部表,数据导入导出load,insert

    2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库 这oracle比sql安全,强大多了,所以你需要学

    2024年02月08日
    浏览(76)
  • hive sql 语句查询规则

    注意: 1、order by 会对输入做全局排序,因此只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。 2、sort by不是全局排序,其在数据进入reducer前完成排序。因此,如果用sort by进行排序,并且设置mapred.reduce.tasks1,则sort by只保证每个reducer的输出有序,不保证全局

    2024年04月28日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包