
hive
文章平均质量分 80
Data_IT_Farmer
BJUT 2014级 计算机学院小硕一枚,现为某上市金融公司--高级大数据开发工程师一枚。自20170701开始记录自己的技术工作生涯!广结天下技术之友,笑对未来技术之难题!
展开
-
hive和spark-sql中 日期和时间相关函数 测试对比
hive和spark-sql中 日期和时间相关函数 测试对比原创 2023-11-12 11:21:40 · 2230 阅读 · 0 评论 -
shell脚本中用hive -e执行sql出现「cannot recognize input near ‘<EOF>‘ in select clause」问题
1、shell脚本中用hive -e执行sql出现「cannot recognize input near ‘<EOF>‘ in select clause」问题2、解决方案修改hive -e ${sql}为hive -e "${sql}"3、原因分析若没有使用双引号进行包括,则"hive -e"会认为后面的sql内容解析为多个参数造成错误。而使用双引号后,整个sql将作为一个单独的参数传给hive。转载 2022-11-09 10:22:36 · 3144 阅读 · 0 评论 -
hive 和 spark-sql 如何写SQL求出中位数平均数和众数(count 之外的方法)
1、概念介绍 平均数、中位数、众数都是度量一组数据集中趋势的统计量。所谓集中趋势是指一组数据向某一中心值靠拢的倾向,测度集中趋势就是寻找数据一般水平的代表值或中心值。而这三个特征数又各有特点,能够从不同的角度提供信息。平均数特点:计算用到所有的数据,它能够充分利用数据提供的信息,它具有优秀的数学性质,因此在实际应用中较为广泛。但它受极端值的影响较大。应用场合:没有极端值的情况下数据集中趋势的刻画。如:小明五次测试的成绩为87、88、89、93、94你认为小明这五次测试成绩怎样?...转载 2021-11-24 10:27:15 · 8268 阅读 · 1 评论 -
HiveSQL/SparkSQL的 round() 、floor()和 ceil()的 用法
HiveSQL/SparkSQL的 round() 、floor()和 ceil()的 用法1、概述round四舍五入floor 取左值ceil 取右值2、在SparkSQL中的示例spark版本:spark-2.3.4Hive client (version 1.2.2)spark-sql> select round(1.2356);1Time taken: 0.788 seconds, Fetched 1 row(s)spark-sql> ...转载 2021-04-30 20:11:29 · 8026 阅读 · 1 评论 -
SparkSQL—最大连续登录天数、当前连续登录天数、最大连续未登录天数问题
Hive SQL——最大连续登录天数、当前连续登录天数、最大连续未登录天数问题1、数据准备表字段:用户、新增日期、活跃日期 原数据表:user_active表1.1、测试数据:比较date和timestamp类型CREATE TABLE test_user_active( name string, install_date timestamp, active_date timestamp);insert overwrite table test_user_act.转载 2021-04-26 13:23:31 · 2402 阅读 · 0 评论 -
Hive SQL经典使用场景示例
HQL每天购课总额前三的用户原始数据 with tbl_order as ( select '2019-01-01' as dt, 1 as uid, '数学' as course_id, 50 as price union all select '2019-01-01' as dt, 2 as uid, '数学' as course_id, 50 as price union all select '2...原创 2021-04-16 20:47:33 · 740 阅读 · 0 评论 -
hive sql和spark sql查询同一条SQL语句,结果不一样(甚至条数差别很大)的原因
hive sql和spark sql查询同一条SQL语句,结果不一样(甚至条数差别很大)的原因哪位老师帮忙看一下同一句sql,hive sql 查出来 160w ,但是spark sql (spark-shell或者spark.sql()) 查出来只有150w0、结论:可以看下SQL 中 join on 两边的字段类型是否一致我之前遇到这样的问题,发现on 条件 等号两边的字段类型不一致造成的当 on 条件两边字段类型,一边是string,一边是bigint; 在hive中 会 把 st..原创 2021-03-11 22:01:15 · 4351 阅读 · 0 评论 -
判空函数之mysql中ifnull函数和hive中if函数及nvl函数介绍
判空函数之mysql中ifnull函数和hive中if函数及nvl函数介绍先说说,在mysql中,ifnull函数的用法,其表达式如下:IFNULL(expr1,expr2)如果 expr1 不是 NULL,IFNULL() 返回 expr1,否则它返回 expr2。IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。举个应用场景,比如某一个字段定义为int类型,其默认值为0,但是在sql查询过程中,有可能出现为null,这个时候,我们就可以用ifnull来判断一下,如果结果原创 2020-09-15 16:38:34 · 3645 阅读 · 0 评论 -
Hive中的分析窗口函数 LAG,LEAD,FIRST_VALUE,LAST_VALUE的经典例子
题目背景:登录表 t_login: user_id,login_time,login_ip需求:1)、 加工出一张用户首末次登录的信息表。user_id,first_login_time,first_login_ip,last_login_time,last_login_ip2)、 新增一个字段--距离上次登录的时间间隔(sub_dur)0)、准备数据和表用户id,访问时间,访问国家s001|100|ens001|120|cns001|45|lss001|34|c...原创 2020-09-01 09:52:48 · 1146 阅读 · 1 评论 -
Hive的分析窗口函数SUM,AVG,MIN,MAX的例子
Hive中提供了越来越多的分析函数,用于完成负责的统计分析。抽时间将所有的分析窗口函数理一遍,将陆续发布。今天先看几个基础的,SUM、AVG、MIN、MAX。用于实现分组内所有和连续累积的统计。Hive版本为 apache-hive-0.13.1数据准备CREATE EXTERNAL TABLE lxw1234 (cookieid string,createtime string, --daypv INT) ROW FORMAT DELIMITEDFIELDS TE转载 2020-09-01 09:15:49 · 4881 阅读 · 0 评论 -
漫谈数据仓库之拉链表使用场景、原理和在Hive中的实现示例
一、全量表-增量表-拉链表-流水表-介绍1. 全量表:每天的所有的最新状态的数据,2. 增量表:每天的新增数据,增量数据是上次导出之后的新数据。3. 拉链表:维护历史状态,以及最新状态数据的一种表,拉链表根据拉链粒度的不同,实际上相当于快照,只不过做了优化,去除了一部分不变的记录而已,通过拉链表可以很方便的还原出拉链时点的客户记录。4. 流水表: 对于表的每一个修改都会记录,可以用于反映实际记录的变更。拉链表和流水表的区别流水表存放的是一个用户的变更记录,比如在一张流水表中,一天的.转载 2020-05-27 22:06:05 · 4275 阅读 · 0 评论 -
Hive自定义函数UDF与transform的区别和使用例子
Hive自定义函数与transform的区别和使用例子 hive是给了我们很多内置函数的,比如转大小写,截取字符串等,具体的都在官方文档里面。但是并不是所有的函数都能满足我们的需求,所以hive提供了给我们自定义函数的功能。一般有两种方法:自定义内置函数 UDF(Java实现)和Transform关键字(Python)实现一、Transform关键字(Python)实现...转载 2020-03-29 23:40:13 · 1558 阅读 · 0 评论 -
hive-sql查询结果保留特点小数位数的方法
一、ceil:向上取整ceil(DOUBLE d): d是DOUBLE类型的,返回>=d的最小的BIGINT值spark-hive> select ceil(123.58);_c0124Time taken: 0.093 sspark-hive> select ceil(123.28);_c0124Time taken: 0.109 s二、flo...转载 2019-12-17 13:27:17 · 23597 阅读 · 1 评论 -
Hive分析函数之SUM,AVG,MIN和MAX OVER(PARTITION BY xxx order by xxx,用于求一段时间内截至到每天的累计访问次数、平均访问次数、最小访问次数、最大访问次
Hive分析函数之SUM,AVG,MIN和MAX OVER(PARTITION BY xxx order by xxx,用于求一段时间内截至到每天的累计访问次数、平均访问次数、最小访问次数、最大访问次数Hive提供了很多分析函数,用于统计分析,比如SUM OVER PARTITION BY ORDER BY 是 实现分组累计的计算方法。本文先介绍SUM、AVG、MIN、MA...转载 2019-12-17 13:16:26 · 13973 阅读 · 0 评论 -
【spark源码系列】pyspark.sql.Row介绍和使用示例
0、Spark SQL和DataFrames重要的类有:pyspark.sql.SQLContext: DataFrame和SQL方法的主入口 pyspark.sql.DataFrame: 将分布式数据集分组到指定列名的数据框中 pyspark.sql.Column :DataFrame中的列 pyspark.sql.Row: DataFrame数据的行 pyspark.sql.Hiv...原创 2019-12-08 11:36:15 · 7463 阅读 · 2 评论 -
hive中的lateral view 与 explode函数,及collect_set函数的使用
大纲: 1、概述 2、explode 使用例子 3、引入lateral view的原因 4、explode与lateral view使用示例1 5、explode与lateral view使用示例2 6、collect_set()函数示例 7、substr()函数示例 8、concat_ws()函数示例1、概述 ...转载 2019-10-18 16:49:27 · 4009 阅读 · 5 评论 -
hive中简单介绍分区表(partition table),含动态分区(dynamic partition)与静态分区(static partition)
hive中简单介绍分区表(partition table),含动态分区(dynamic partition)与静态分区(static partition)hive中创建分区表没有什么复杂的分区类型(范围分区、列表分区、hash分区、混合分区等)。分区列也不是表中的一个实际的字段,而是一个或者多个伪列。意思是说在表的数据文件中实际上并不保存分区列的信息与数据。转载 2017-11-04 19:07:25 · 12723 阅读 · 0 评论 -
hive 和hadoop数据压缩与存储格式选择
hive和hadoop 数据压缩与存储格式选择概述为什么会出现需要对文件进行压缩?在Hadoop中,文件需要存储、传输、读取磁盘、写入磁盘等等操作,而文件的大小,直接决定了这些这些操作的速度。压缩在大数据中的使用为什么需要压缩?1) 存储2) 网络/磁盘IO常见压缩方式、压缩比、压缩解压缩时间、是否可切分原文件:1403MSnappy 压缩:701M,压缩...转载 2019-03-12 11:55:53 · 1155 阅读 · 1 评论 -
【hive创建动态分区】使用MSCK命令修复Hive表分区
【hive创建动态分区】使用MSCK命令修复Hive表分区一、介绍我们平时通常是通过alter table add partition方式增加Hive的分区的,但有时候会通过HDFS put/cp命令往表目录下拷贝分区目录,如果目录多,需要执行多条alter语句,非常麻烦。Hive提供了一个"Recover Partition"的功能。具体语法如下:MSCK REPAIR TAB...转载 2019-07-01 21:10:00 · 1109 阅读 · 0 评论 -
【hive创建动态分区】hive使用动态分区插入数据详解
【hive创建动态分区】hive使用动态分区插入数据详解往hive分区表中插入数据时,如果需要创建的分区很多,比如以表中某个字段进行分区存储,则需要复制粘贴修改很多sql去执行,效率低。因为hive是批处理系统,所以hive提供了一个动态分区功能,其可以基于查询参数的位置去推断分区的名称,从而建立分区。 1.创建一个单一字段分区表create table dpartition(i...转载 2019-07-01 21:18:37 · 8611 阅读 · 0 评论 -
【spark exception】org.apache.spark.SparkException java.lang.ArrayIndexOutOfBoundsException 造成数组越界
【spark exception】org.apache.spark.SparkException java.lang.ArrayIndexOutOfBoundsException 造成数组越界当执行以下spark-sql是时候insert overwrite table hive_user_income_detail_daily partition (pday='20190620',i...原创 2019-06-28 17:01:10 · 3635 阅读 · 0 评论 -
Python中: unsupported format character ''' (0x27)
Python中: unsupported format character ''' (0x27)1)MySQL DB使用%运算符将参数放入查询中,因此查询字符串中的任何单个%字符都被解释为参数说明符的开始。2)%在python中三个特殊的符号,如%s,%d分别代表了字符串占位符和数字占位符。例子一、今天写python程序,用pymysql从数据库查询数据,使用like模糊匹配报错:...转载 2019-07-19 11:32:47 · 20585 阅读 · 2 评论 -
Hive的三个窗口函数排序结果的差异(rank函数,dense_rank函数,row_numer函数)
总结:RANK() 排序相同时会重复,总数不会变DENSE_RANK() 排序相同时会重复,总数会减少ROW_NUMBER() 会根据顺序计算这三个函数常常和开窗函数结合在一起使用案例实操:1,计算没门科目的成绩排名:[isea@hadoop108 datas]$ cat score.txt悟空 语文 87悟空 数学...转载 2019-08-31 19:40:22 · 1007 阅读 · 0 评论 -
Hive 自定义函数UDF开发手把手教程—— 创建临时函数和永久函数
Hive 自定义函数UDF开发手把手教程—— 创建临时函数和永久函数 Hive中,除了提供丰富的内置函数(见[一起学Hive]之二–Hive函数大全-完整版)之外,还允许用户使用Java开发自定义的UDF函数。开发自定义UDF函数有两种方式,一个是继承org.apache.hadoop.hive.ql.exec.UDF,另一个是继承org.apache.hadoop.hiv...原创 2019-10-11 11:58:58 · 9255 阅读 · 0 评论 -
数据仓库DW、ODS、DM概念及其区别
数据仓库DW、ODS、DM概念及其区别一、整体结构在具体分析数据仓库之前先看下一下数据中心的整体架构以及数据流向数据中心整体架构DB 是现有的数据来源(也称各个系统的元数据),可以为mysql、SQLserver、文件日志等,为数据仓库提供数据来源的一般存在于现有的业务系统之中。 ETL的是 Extract-Transform-Load 的缩写,用来描述将数据从来源迁移到目标...转载 2019-03-16 15:32:38 · 36750 阅读 · 4 评论 -
数据仓库ODS、DW和DM概念区分
数据仓库ODS、DW和DM概念区分今天看了一些专业的解释,还是对ODS、DW和DM认识不深刻,下班后花时间分别查了查它们的概念。ODS——操作性数据DW——数据仓库DM——数据集市1.数据中心整体架构数据中心整体架构数据仓库的整理架构,各个系统的元数据(包括MySQL等DB数据库,hdfs日志,原始文件等类型)通过ETL同步到操作性数据仓库ODS中,对ODS数...转载 2019-03-16 15:06:51 · 4760 阅读 · 0 评论 -
HIVE 窗口及分析函数 应用场景
窗口函数应用场景:(1)用于分区排序(2)动态Group By(3)Top N(4)累计计算(5)层次查询hive中一般取top n时,row_number(),rank,dense_rank()这三个函数就派上用场了,先简单说下这三函数都是排名的,不过呢还有点细微的区别。通过代码运行结果一看就明白了。ROW_NUMBER() OVER函数的基本用法语法:R...转载 2019-02-28 23:14:06 · 8428 阅读 · 1 评论 -
Hive日期格式转换用法和教训
本文将从以下两个方面介绍:一、关于hive日期格式-亲身经历的教训(莫名其妙):二、具体各种hive日期函数用法:写在前面:Hive日期格式以下写法是错误的:'yyyy-mm-dd''yyyymmdd'一定要牢记,为避免和分钟格式(mm)冲突,月份的格式一定要写为(MM),否则将会出现莫名其妙的结果!!一、关于hive日期格式-亲身经历的教训(莫名其妙):错误...转载 2018-04-13 13:10:49 · 18984 阅读 · 0 评论 -
hive 动态分区(Dynamic Partition)异常处理
hive 动态分区(Dynamic Partition)异常处理Changing Hive Dynamic Partition LimitsSymptoms:Hive enforces limits on the number of dynamic partitions that it creates. The default is 100 dynamic partitions per nod...转载 2018-03-27 11:43:30 · 5551 阅读 · 0 评论 -
Hive几种数据导入方式和动态分区,多表插入等调优小技巧
Hive几种数据导入方式和动态分区,多表插入等调优小技巧Hive几种数据导入方式今天的话题是总结Hive的几种常见的数据导入方式,我总结为四种:(1)、从本地文件系统中导入数据到Hive表;(2)、从HDFS上导入数据到Hive表;(3)、从别的表中查询出相应的数据并导入到Hive表中;(4)、在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中。我会对每一种数据的导入进行实际的操作,...原创 2018-03-26 19:23:27 · 12478 阅读 · 1 评论 -
Hive内置的字符串函数介绍
Hive内部提供了很多操作字符串的相关函数,本文将对其中部分常用的函数进行介绍。下表为Hive内置的字符串函数,具体的用法可以参见本文的下半部分。返回类型函数名描述intascii(string str)返回str第一个字符串的数值stringbase64(binary bin)将二进制参数转换为base64字符串stringconcat(string|binary A, string|bin...转载 2018-02-08 11:55:20 · 2179 阅读 · 0 评论 -
Hive的表的创建及外部表、分区表介绍
Hive的表的创建(内部表)及外部表、分区表详细介绍那么Hive中管理表(内部表)和外部表的区别是什么,及分区表使用场景?⑴ 三者区别:①Hive创建内部表时(默认创建内部表),会将数据移动到数据仓库指向的路径;②创建外部表(需要加关键字external),仅记录数据所在的路径,不对数据的位置做任何改变;③Hive删除表时,内部表的元数据和数据会被一起删除,而外部表只删除元转载 2017-11-04 14:12:01 · 2561 阅读 · 0 评论 -
Hive通过动态分区装载数据
Hive通过动态分区装载数据转载 2017-11-04 16:50:14 · 4061 阅读 · 0 评论 -
创建hive表和使用Load data指令导入数据的注意事项
创建hive表和使用Load data指令导入数据的注意事项(一)创建hive数据库和表1.1 类似于MySql创建命令,创建数据库和表,并指定它在hdfs上的存储数据的目录'/hive_hdfs_local_data‘hive> CREATE DATABASE yyz_workdb;hive> create external table test_user( > us...原创 2017-11-04 11:56:58 · 73597 阅读 · 1 评论 -
启动hive hiveserver2会报警告-Mon Oct 16 10:25:12 CST 2017 WARN: Establishing SSL connection without server
启动hive hiveserver2会报警告- WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For原创 2017-10-16 17:35:29 · 11914 阅读 · 0 评论 -
python借助pysh2连接hiveserver2操作hive数据库时thrift.transport.TTransport.TTransportException: TSocket read 0
python连接hive数据库时运行报错如下:thrift.transport.TTransport.TTransportException: TSocket read 0 byteshive 的hiveserver2的运行日志报错如下:2017-10-12T14:24:03,540 WARN [HiveServer2-Handler-Pool: Thread-39] service.CompositeService: Failed to open sessionjava.lang.Runtime原创 2017-10-12 16:55:28 · 12734 阅读 · 0 评论 -
hive SQL 创建数据库,创建hive表、查询时,其表名,字段,统统不区分大写(在底层一律转换为小写)
hive SQL 创建数据库,创建hive表、查询时,其表名,字段,统统不区分大写(在底层一律转换为小写)(1)、默认default数据库hive默认自带一个名为default的数据库,如果建表时没有指定你要用哪个数据库,默认你的表就会建到default数据库中。CREATE DATABASE|SCHEMA [IF NOT EXISTS] <database name>在这里,IF N...原创 2018-05-18 10:44:03 · 11614 阅读 · 0 评论 -
Hive下查看表占用空间大小的方法
一、Hive下查看数据表信息的方法方法1:查看表的字段信息desc table_name;方法2:查看表的字段信息及元数据存储路径desc extended table_name;方法3:查看表的字段信息及元数据存储路径desc formatted table_name;备注:查看表元数据存储路径是,推荐方法3,信息比较清晰。hive> desc parquet;OKmember_id ...转载 2018-05-18 15:23:36 · 43096 阅读 · 1 评论 -
Hive实现分组排序、分组求取topN或者分页的实现方法
使用到的语法:ROW_NUMBER() OVER(PARTITION BY COL1 ORDER BY COL2)简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后的每条xlh记录返回一个序号。表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的...转载 2019-02-28 22:00:08 · 16040 阅读 · 0 评论 -
Hive中HSQL中left semi join和INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN区别
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。sql中的连接查询有inner join(内连接)、left join(左连接)、right join(右连接)、full join(全连接)left semi join(左半连接)五种方式,它们之间其实并没有太大区别,仅仅是...原创 2019-02-25 01:37:52 · 28630 阅读 · 3 评论