[hive]现有一HQL语句,使用group by,在5000W下使用造成hive瘫痪,求优化 20C

需求是一个表里的两波数据进行匹配去重,单去重不是单条对单挑的,是先把相同的合并,然后在匹配
例如
编号 姓名 年龄
1 小六 null
1 小七 18

然后新进来的数据与上面的去比较查重
编号 姓名 年龄
1 小六 18

以编号相同为前提查重,这条数据的结果应该是完全重复
我的想法是先将数据库的相同编号的数据group by合并,然后将他们的其他字段保存为数组,然后转为字符串,最后join的时候看看新数据是否包含在原来的字段里

然后写了这个语句,刚开始测试没问题,可以用,后来底层查重的数据变多,5000w,hive经常会死掉,求优化

(join左边的表数据全部的都是不重复的,但是右边的表有重复)
(数据都在一章表里,我通过type来划分成两部分的)

 select t.num from test.data_test as t
inner join (select num,concat_ws(",",collect_set(t1.username)) as username,concat_ws(",",collect_set(t1.gender)) as gender,concat_ws(",",collect_set(cast(t1.age as string))) as age,concat_ws(",",collect_set(t1.city_short)) as city_short from test.data_test t1 
where t1.type != 'ty1'
group by t1.num)t2 
on t.num = t2.num
where t.type = "ty1"
and ((instr(t2.username,t.username) > 0) or t.username is null)
and ((instr(t2.gender,t.gender) > 0) or t.gender is null)
and ((instr(t2.age,cast(t.age as string)) > 0) or t.age is null)
and ((instr(t2.city_short,t.city_short) > 0) or t.city_short is null)

或者请指点这里面那里的操作会很很耗费性能,我们是单线程操作,没有并发

1个回答

建议你在数据库层进行操作

u011856283
你好杰米 不懂
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
hive的基本使用及HQL
1、 创建库:create database if not exists mydb;        创建库的时候带注释            create database if not exists dbname comment 'create my db named dbname';        创建带属性的库            create database if not exists...
Hive的基本hql语句
1.创建表 数据类型: data_type primitive_type 原始数据类型 | array_type 数组 | map_type map | struct_type | union_type – (Note: Available in Hive 0.7.0 and later) primitive_type TINYINT | SMALLINT | INT ...
Hive中GROUP BY和HAVING语句的使用
<p>n 随着大数据技术的不断发展壮大, Hive不再是大数据技术生态圈中一个普通的工具,而是在大数据分析和大数据仓库中占据着几乎不可替代的重要作用,大数据分析中Hive和Hbase、Hive和Spark SQL、Hive和Impala的结合使用愈加紧密,大数据仓库中Hive在数据仓库建模模块的作用暂时无可替代。所以,深入学好Hive是入门大数据分析、大数据仓库最好的选择。n</p>n<div>n <br /></div>
Hive使用常见问题&&优化
1)内存溢出 map阶段 解决:一般存在MapJoin,设置参数set hive.auto.convert.join = false转成reduce端的Common Join。 shuffle阶段 解决:减少每个reduce处理的数据量,调整参数:hive.exec.reducers.bytes.per.reducer,默认300000000。或调整放在内存里的最大片段所占百分比(set mapr...
Hive HQL使用技巧和函数
Hive HQL使用技巧 HQL与SQL基本类似。 注意点: HQL查询中,使用表达式计算出的值,表达式中若有一个变量为NULL,那么整个表达式都为NULL。如:sal*12+comm,若comm或sal为NULL,那么表达式结果也为NULL。可以使用函数nvl(var, if_null_value)判断空值和赋予默认值。 Fetch Task(Since ver0.10.0)
hive之HQL 使用where过滤
查询10号部门的员工select * from emp where deptno=10查询名叫king 的员工select * from emp where name='king'在hive的HQL语句中是严格区分大小写的查询部号是10,薪水小于2000的员工select * from emp where deptno=10 and sal&amp;lt;20;分析执行计划explain select *...
Hive(10):hive支持常用HQL语句
1、过滤 (1)where:select,update,delete,insert into  select * from emp where sal &amp;gt; 3000; (2)limit    select * from emp limit 1; (3)distinct,count/group by      select distinct deptno from emp; ...
使用hive的常用命令语句
2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt; ...
hive sql的使用(一)
hive sql case when case diffSize when 0 then apkSize else diffSize end
【HIVE篇】HIVE的使用
一、基本的表操作 1.创建表: create table testTable( id int, name string, likes array&amp;lt;string&amp;gt;, address map&amp;lt;string,string&amp;gt; )ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' COLLECTIO...
Hive的HQL语句及数据倾斜解决方案
[版权申明:本文系作者原创,转载请注明出处]文章出处:http://blog.csdn.net/sdksdk0/article/details/51675005作者: 朱培          ID:sdksdk0Hive环境的搭建在这里也不重复说了,安装配置可以查看我的这篇文章:http://blog.csdn.net/sdksdk0/article/details/51512031。在这里主要是
hive基础(二)--HQL语句
1.执行shell命令 用户不需要退出hive CLI,即可执行简单的bash shell 命令,只要在命令前加上!,并以分号结尾即可: hive> ! echo "hello world"; "hello world" hive> !pwd; /home/linux 注:hive CLI不能使用需要用户进行输入的交互式命令,而且不支持shell的管道功能和文件名的自动补全功能。
hive hql语句高级用法
一,order by ,sort by,distribute by 的用法 1)order by 对全局数据的一个排序,仅仅只有一个reduce工作,最好不用。 2)sort by 对每一个reduce 内部数据进行排序,全局结果集来说不是排序。 set mapreduce.job.reuces = 3 ; 会生成3个文件,每个文件内都是排好序的。 3)distribute by 分...
hive执行语句优化
一、类SQL语句优化 1、跟SQL基本一致的优化原则 1.1 尽量原子化操作 尽量避免一个SQL包含复杂逻辑,可以使用中间表来完成复杂的逻辑。 1.2 尽量尽早地过滤数据 尽量先where筛选后再join,减少每个阶段的数据量,对于分区表要加分区条件,只选择需要使用到的字段。 1.3 表链接时尽量使用相同的连接键 当对3个或者更多个表进行join连接时,如果每个on子...
Hive思维导图之Hive优化
Hive思维导图之Hive优化
[Hive]Hive排序优化
1、从order by 到 sort by order by:全局排序,大数据集会消耗太过漫长的时间 sort by:只会在每个reducer 中对数据进行排序,也就是执行局部排序过程,只能保证每个reducer的输出数据都是有序的(但并非全局有序) 2、sort by+distribute by distribute by控制map的输出在reducer中是如何划分的。假设我们希望具有相同股票交...
【图文详细 】Hive 优化策略 之 Group By 优化
-
Hive学习(一)group by 报错
先创建表格 CREATE TABLE dm_order_2018( id string COMMENT '订单id', order_money double COMMENT '订单金额', member_id int COMMENT '会员id', create_time timestamp COMMENT '创建时间', status int COMMENT '订单状态'...
HIVE使用
1.创建表 --txt create table olt_loid(AREA_ID string,CITY string,LOID string,OLT_IP string,PON_ID string,ONU_ID string) row format delimited fields terminated by ',' stored as textfile; create table...
Spark2.4+Hive使用现有Hive仓库中的数据
使用前准备 hive-site.xml复制到$SPARK_HOME/conf目录下 hive连接mysql的jar包(mysql-connector-java-8.0.13.jar)也要复制到$SPARK_HOME/jars目录下 或者在spark-submit脚本中通过–jars指明该jar包位置 或者在spark-env.xml中把该jar包位置加入Class Path export SP...
hive学习笔记,hive内置函数的使用
Hive常用内置函数: 1、类型转换函数,2、数学运算函数,3、字符串操作函数,4、时间操作函数 5、表生成函数,6,、集合操作函数数  ,7、条件控制函数 ,8、json解析函数 ,9、分析函数(分组排序) 其中:        1、类型转换函数 包含:字符串转日期,字符串转int类型等操作 cast(&quot;2017-08-03&quot; as date) ;cast(&quot;5&quot; as int) ; ...
Hive 使用
Hive使用主要分为以下几个步骤: 建立表导入数据SQL查询 开始正文前先考虑几个问题: Hive中不支持insert 语句向表中导入数据,那么建立的空表怎么和集群中的数据关联起来呢?怎么理解数据库中的表和集群中数据的关联?Hive是做的其实是一种翻译工作,将mapreduce程序翻译成SQL语言。那么执行SQL查询语句时,SQL会被翻译成mapreduce来执行吗? Hi
Hive学习笔记,hive自定义函数的使用
本文参考自互联网,并进行结合后整理如下: Hive自定义函数,用于处理一些比较复杂的数据处理, 比如有如下数据: 27.19.74.143-[29/April/2016:17:38:20 +0800]-&quot;GET /static/image/common/faq.gif HTTP/1.1&quot;-200-1127 110.52.250.126-[29/April/2016:17:38:20 +08...
hive学习001 hive的使用
概念   hive是一个数据仓库(数据库与数据仓库概念我也不是很清楚),不过他可以建很多数据库,很多数据库下又会有很多的表。提供了一种HIVE QL的查询语言。 结构   (图选自hive 用户指导1.0,版本不同会有差异http://wenku.baidu.com/link?url=Oe4fznW4mkt5yS418-oPSFwGFEJYrco9NkGH-2LBMsdSztQ_
Hive学习笔记 --- Hive的Beeline使用
Hive学习笔记 --- Hive的Beeline使用
hive的使用
1.创建table; 2.导入本地数据: 3.查询hive表 4.查看hdfs目录下的文件(表数据) 注:如出现查看表数据存在,但是执行 select查询hive表出现null可能是数据文件中的分隔符的问题,更改分隔符,再次导入查询即可。 从hdfs导入数据到hive表 首先上传建好的文件到xhdfs系统; 查看上传后的文件: hiv
HIVE的使用
hive笔记数据库的创建和删除CREATE DATABASE|SCHEMA IF NOT EXISTS <database name>; DROP DATABASE IF EXISTS <database name>; #----------------------------------------- 创建时添加db文件保存在HDFS的路径 CREATE (DATABASE|SCHEMA) [I
使用Hive
1、查看数据库,并创建数据库lab 2、使用数据库lab,并创建一个表stock_data(hivesql和sql语句比较相似) 3、查看表结构 4、向表中加载数据 5、创建序列表stock_data2 6、将表stock_data中的数据复制到表stock_data2中 7、从表中检索数据
Hive使用
Hive数据库和表 Hive在HDFS上的默认存储路径 Hive的数据都是存储在HDFS上的,默认有一个根目录,在hive-site.xml中,由参数hive.metastore.warehouse.dir指定。默认值为/user/hive/warehouse. Hive中的数据库(Database) 进入Hive命令行,执行show databases;命令,可以列出hive...
Hive下 HQL使用(库、表、区)
准备:Mysql&amp;amp;Hive:Mysql&amp;amp;Hive:基于Hive的伪分布式Hadoop集群环境的配置的博客hive使用(HQL)不用进入hive的客户端,可以使用如下命令来查看$ hive -e 'show databases'数据库操作创建数据库:create database db;如果数据库不存在就创建:create database if not exists db;在指定的...
Hive概述纲要、环境配置以及HQL使用
hive概述Hive产生背景Hive是什么为什么要使用Hivehive的数据结构hive的基本操作hive的数据类型hive 元数据Hive的体系架构 Hive部署架构Hive与RDBMS的关系、区别Hive的优缺点Hive适用场景hive存储文件格式和压缩Hive环境搭建hive概述hive是大数据仓库软件,它提供了sql的方式简化大数据mapreduce的数据读取写入统计。并提供了多种使用途径...
Hive之Show、Describe语句使用
1.表及分区格式化信息包含存储位置、分隔符格式、创建时间等信息。describe formatted table_name [PARTITION(partition_desc)]; describe formatted recommend_data_view partition (pt_day='2018-07-19'); describe formatted recommend_data_v...
hive性能优化使用group by替代distinct原理
日常业务统计中经常使用除重(distinct)操作,但是当出现某一组数据特别多时就会出现数据倾斜。于是在SQL编写的时候就使用group by来代替distinct,从而让执行效率提升。下面说一下个人的理解。 原始数据page_test表 1.distinct底层实现原理(select city,count(distinct user_id) from page_test group by ci...
【Hive一】Hive入门
Hive安装与配置 Hive的运行需要依赖于Hadoop,因此需要首先安装Hadoop2.5.2,并且Hive的启动前需要首先启动Hadoop。   Hive安装和配置的步骤   1. 从如下地址下载Hive0.14.0   http://mirror.bit.edu.cn/apache/hive/    2.解压hive,在系统变量里配置如下变量HIVE_HOME和PATH...
hive( 一)--hive安装
一、简介 hive是基于hadoop的数据仓库工具,提供了类sql的查询语言,将sql语句转化为MapReduce进行执行。 这里介绍hive的安装。二、安装步骤 1、准备 a、安装hadoop,并启动hdfs和MapReduce(hadoop的安装过程在此略过,详情请查看本博客hadoop安装); b、安装mysql,并启动; 2、下载hive wget https://mirrors.tuna...
【Hive十一】Hive数据倾斜优化
什么是Hive数据倾斜问题   操作:join,group by,count distinct 现象:任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成;查看未完成的子任务,可以看到本地读写数据量积累非常大,通常超过10GB可以认定为发生数据倾斜。 原因:key分布不均匀 倾斜度衡量:平均记录数超过50w且最大记录数是超过...
Hive总结篇及Hive的优化
https://blog.csdn.net/yu0_zhang0/article/details/81776459
学习Hive(五)Hive 优化
Hive优化核心思想是把Hive Sql当做MapReduce去优化。 1、select查询本表、where进队本表字段做过滤时不会转为MapReduce执行。 原因:Hive抓取策略配置。Set hive.fetch.task.conversion=none/more; 默认配置为more.所以对部分查询不会转为MapReduce执行。 2、Hive sql转为MapReduce的过程:...
Hive学习笔记(15)- Hive 优化
1 Hive 优化 1.1 hive.fetch.task.conversion &amp;amp;lt;property&amp;amp;gt; &amp;amp;lt;name&amp;amp;gt;hive.fetch.task.conversion&amp;amp;lt;/name&amp;amp;gt; &amp;amp;lt;value&amp;amp;gt;more&amp;amp;lt;/value&amp;amp;gt; &amp;amp;lt;descriptio
Hive优化--关键参数及HQL案例
1.      关键参数及HQL案例 1.1.    当输入数据量较大时减小Map处理的最大数据量 已知表midsrc有1.5亿条记录,如下: 分别设置map处理最大数据量为1024000000、512000000、256000000、128000000观察以下语句的执行情况。 统计信息如下: Map处理的最大数据量 Mapper数 执行时长(
相关热词 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天 c#字典序排序 c# 截屏取色 c#中的哪些属于托管机制