Hive
香山上的麻雀1008
大数据
展开
-
hive udtf 函数:输入一个字符串,将这个字符串按照特殊的逻辑处理之后,输出4个字段
【代码】hive udtf 函数:输入一个字符串,将这个字符串按照特殊的逻辑处理之后,输出4个字段。原创 2024-08-06 13:55:26 · 453 阅读 · 0 评论 -
hive中的爆炸函数在presto中的写法
hive中的爆炸函数写法:SELECT student, scoreFROM testsLATERAL VIEW explode(scores) t AS score;爆炸函数在presto中的写法:SELECT student, scoreFROM testsCROSS JOIN UNNEST(scores) AS t (score);原创 2022-03-25 14:25:44 · 3275 阅读 · 0 评论 -
hive beeline 链接impala
beeline -d "com.cloudera.impala.jdbc41.Driver" \-u "jdbc:impala://xxxx:21050/;AuthMech=1;KrbRealm=.COM.LOCAL;KrbHostFQDN=xxx;KrbServiceName=impala"原创 2021-12-20 19:33:03 · 1255 阅读 · 0 评论 -
HIVE 查询结果中显示库名、列名(不带表名)
<property> <name>hive.cli.print.header</name> <value>true</value> <description>Whether to print the names of the columns in query output.</description> </property><property>转载 2021-11-26 17:30:35 · 1437 阅读 · 1 评论 -
presto 中的 substr 函数 与 Hive中的 substr 函数用法不同
presto语法:substr(string, start, length) → varchar而且start必须从1开始Hive 中语法:substr(STRING|BINARY A, INT start [, INT len])start 可以从0开始,也可以从1开始,结果是一样的这点要注意原创 2021-11-24 15:13:07 · 3078 阅读 · 0 评论 -
flink SQL报错java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLj
问题flink SQL连接hive以及hudi 报错java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V,查询资料后发现就是guava版本冲突造成的。hive 3.1.2版本内置的guava是19.0版本的,而hadoop中的guava是27.0-jre版本的,flink内置的guava也有多个版本。彼此之间版本就冲突了原创 2021-10-12 21:21:01 · 3494 阅读 · 2 评论 -
备份Hive中的建表语句
需要做数据备份,将hive中的表结构全部导出来:$ cat create_table_statement.sh#/bin/bashdb=odstbls=`hive -e "use $db;show tables"`for tbl in $tbls;do statement=`hive -e "use $db;show create table $tbl"` echo $statement >> $db"_statement.sql"done...原创 2021-09-27 18:50:22 · 572 阅读 · 0 评论 -
hive 解析 jsonArray,且jsonArray数组中的个数未知【json_tuple,lateral view,explode】
例如:一个JSONArray为:[{"id":"1","name":"zhangsan"},{"id":"2","name":"lisi"},{"id":"3","name":"wangwu"},...]用 get_json_object() 处理这种并不是很友好:我们可以这样:SELECT explode(split(regexp_replace(regexp_replace( '[{"id":"1","name":"zhangsan"},{"id":"2","name":"lisi"},原创 2021-09-17 21:47:16 · 1233 阅读 · 0 评论 -
hive传递参数与调用(hive SQL 脚本传参)
在运行hive命令时传入参数,使用-hivevar 和 -hiveconf 两种参数选项,来给此次的执行脚本传入参数-hivevar : 传参数 ,专门提供给用户自定义变量。-hiveconf : 传参数,包括了hive-site.xml中配置的hive全局变量。(1)脚本调用test.sqluse default;select '${hiveconf:month}' as monthfrom default.user1;start.sh#!/bin/sh#ecoding=utf-8转载 2021-08-26 10:49:30 · 6416 阅读 · 0 评论 -
hadoop NameNode 配置HA后不生效问题
现象最早Hadoop的NameNode是没有配置HA的,后面配置了HA后发现NameNode发生切换之后表还是不能正常查询了,经过DESCRIBE formatted xxx之后发现,配置过HA之后新建的表的Location仍然是hdfs://host:8020/user/hive/warehouse/xxx.db/xxx而不是配置的Nameservice名称排查经过排查发现配置HA之后新建的数据库里的表,在发生NameNode切换之后仍然能正常查询,推测可能是跟hive的元数据库有关。查看h原创 2021-08-09 19:07:55 · 491 阅读 · 0 评论 -
用户行为分析之用户行为路径计算模型
前提什么是用户行为路径? 1用户路径分析,顾名思义,用户在APP或网站中的访问行为路径。为了衡量网站优化的效果或营销推广的效果,以及了解用户行为偏好,时常要对访问路径的转换数据进行分析。以电商为例,买家从登录网站/APP到支付成功要经过首页浏览、搜索商品、加入购物车、提交订单、支付订单等过程。而在用户真实的选购过程是一个交缠反复的过程,例如提交订单后,用户可能会返回首页继续搜索商品,也可能去取消订单,每一个路径背后都有不同的动机。与其他分析模型配合进行深入分析后,能为找到快速用户动机,从而引领用户走向原创 2021-08-02 08:19:10 · 1094 阅读 · 2 评论 -
用户七日留存率分析
背景APP分析中经常用到AARRR模型(海盗模型)用来分析APP的现状,其中一个重要节点就是提高留存(Acquisition),而留存率这个指标在这个阶段可以说是核心指标也不为过。那如何用SQL计算留存率呢?留存率计算方法假如今天新增了100名用户,第二天登陆了50名,则次日留存率为50/100=50%,第三天登录了30名,则第二日留存率为30/100=30%,以此类推。用SQL的计算思路...原创 2019-04-22 10:14:33 · 1285 阅读 · 0 评论 -
【Hive SQL 新算法】求任意时间段连续登录N天用户数/用户明细/最长连续登陆天数/用户留存率问题总结
注:本计算方法原创来源于:https://blog.csdn.net/hweinifengkuang/article/details/92832309建测试表CREATE TABLE `user_login_table`( `user_id` int COMMENT '用户ID', `login_date` date COMMENT '登录日期') 插入1000条测试数据数据见文末写SQL-- 第二段 根据登陆时间减去排列顺序 得出用户连续登陆的分组SELECT user原创 2021-07-31 15:51:31 · 1586 阅读 · 0 评论 -
Impala SQL解决动态分区 过多小文件问题
在执行的SQL前加上:set NUM_NODES=1;如下:set NUM_NODES=1;refresh ods.ods_sensors_share_event_text;insert overwrite dwd.dwd_sensors_share_event partition(`date`)selectshare_type,url,share_user_id,share_result,site_resource,is_employee,replace(regexp_extract(原创 2021-07-30 11:30:45 · 929 阅读 · 0 评论 -
SQL 的 WITH ROLLUP 用法
MySQL中有个 with rollup 语法,用法是跟在group by 字段之后 ,可以在分组字段的基础上做一个汇总统计。例如以下SQL:就是在company的基础上又做了一个汇总,这个对于数据分析很有帮助。原创 2021-07-29 19:20:02 · 6624 阅读 · 0 评论 -
【SQL】用户中两人一定认识的组合数
设表名:table0现有城市网吧访问数据,字段:网吧id,访客id(身份证号),上线时间,下线时间:规则1、如果有两个用户在一家网吧的前后上下线时间在10分钟以内,则两人可能认识规则2、如果这两个用户在三家以上网吧出现【规则1】的情况,则两人一定认识需求:该城市上网用户中两人一定认识的组合数。表如下:...转载 2021-07-29 14:58:53 · 286 阅读 · 0 评论 -
计算相互关注类型的SQL
计算相互关注类型的SQL,这是前一段时间某公司的面试题,有多种思路,我这里简单实现两种:gift表: 代表着`uid`给`to_uid` 送了礼物follow表:代表`uid`关注了`to_uid`原创 2021-07-26 20:58:45 · 861 阅读 · 0 评论 -
计算互相关注的SQL怎么写
计算互相关注的SQL应该怎么写用户好友关系是一个产品的核心数据,只允许互相关注的用户之间发消息称为强关系型产品,比如微信;反之,不互相关注也能看到动态,比如微博,就是弱关系型产品因为微信的存在,现在基本能做大的都是社区型的,弱关系型的产品了。所以互联网公司就很容易碰到,从单向关注数据中计算是否双向关注这种需求。假设现在有一张表,叫table_relation里面只有两个字段,from_user,to_user, 代表关注关系从from指向to,即from_user关注了to_user。select转载 2021-07-20 21:00:10 · 1515 阅读 · 0 评论 -
ORC和Parquet格式的选择
重点:ORC只支持snappy压缩格式,但是snappy不支持分片,如果文件较大只能通过一个task读取,会导致map读取的数据倾斜;Parquet支持snappy和lzo压缩,lzo支持分片,所以如果存在大文件(压缩之后的大小远大于128M),则适合采用 Parquet + lzo压缩的方式。ORC和Parquet都属于行列式的存储格式,那么在Hive中如何进行选择呢?ORCcreate table student_txn(id int,name string)//指定存储格式stored转载 2021-07-19 17:05:02 · 1286 阅读 · 2 评论 -
Hive分区表新增字段,查询为Null
1.问题在开发过程中,向hive分区表新增字段,发现查询新增字段的值为NULL2.问题复现1.创建分区表,并插入数据create table student(id int,name string) partitioned by (dt string);insert into table student partition(dt = '2019-11-13') select 1,'zhangsan';insert into table student partition(dt = '2019-11转载 2021-07-12 15:02:32 · 408 阅读 · 0 评论 -
【未解决】hive 客户端报如下错
报错信息如下--hiveconf hive.root.logger=DEBUG,DRFA2021-07-09 17:03:27,602 main ERROR Unable to locate appender "DRFA,console" for logger config "root"2021-07-09 17:03:29,132 main ERROR Unable to locate appender "FATAL" for logger config "root"2021-07-09 1.原创 2021-07-09 19:49:08 · 790 阅读 · 3 评论 -
hive 的 get_json_object拆解JSONArray demo
select get_json_object('{"data": [{"id1": 1,"name1": "zhangsan"},{"id2": 2,"name2": "lisi"},{"id3": 3,"name3": "wangwu"}]}','$.data[0].id1') as id1,get_json_object('{"data": [{"id1": 1,"name1": "zhangsan"},{"id2": 2,"name2": "lisi"},{"id3": 3,"name3":原创 2021-07-09 13:47:45 · 842 阅读 · 2 评论 -
hive 外部表操作注意事项
Impala 操作 hive 外部表直接TRUNCATE TABLE + 外部表Impala 可以 TRUNCATE TABLE + 外部表TRUNCATE TABLE 之后查询不到数据;TRUNCATE之后数据也没了,但是该目录还在。show partitions + 表名,分区还在。先drop partitions 外部表 再 TRUNCATE TABLE + 外部表ALTER TABLE ods.ods_hk_user_v2_channel_first_pay_order_tex原创 2021-06-26 10:00:23 · 496 阅读 · 2 评论 -
parquet表增加一列后不能正常读取
问题描述parquet表,使用add column 增加一列后用Impala查询报错:Parquet表增列后hive查询正常,但是Impala查询不正常。解决办法在新加的这一列插入数据即可原创 2021-05-31 18:37:28 · 759 阅读 · 0 评论 -
Hive SQL 计算指定日期本周的第一天和最后一天
select day ,dayofweek(day) as dw1 ,date_add(day,1 - dayofweek(day)) as Su_s -- 周日_start ,date_add(day,7 - dayofweek(day))原创 2021-05-20 17:59:25 · 2703 阅读 · 0 评论 -
hive 视图中出现中文乱码
create view view_test1 asselect case sex when 0 then '女' when 1 then '男' else '' end as sex ,case level when 1 then '一级' when 2 then '二级' else '' end as `level`from tablename1查询结果:解决方式:ALTER TABLE `TBLS` MODIFY COLUMN VIEW_EXPANDED_TEXT mediumtext原创 2021-04-07 21:05:18 · 780 阅读 · 0 评论 -
Hive中CAST()函数用法
Cast(字段名 as 转换的类型 ),其中类型可以为:CHAR[(N)] 字符型DATE 日期型DATETIME 日期和时间型DECIMAL float型SIGNED intTIME 时间型例如表table1date2015-11-03 15:31:26select cast(date as signed) as date from table1;结果如下:da...原创 2019-05-03 18:55:28 · 21866 阅读 · 1 评论 -
新建的hive建表报错Could not create “increment“/“table“ value-generation container `SEQUENCE_TABLE` since
hive (default)> create table page_view > ( > page_id bigint comment '页面ID', > page_name string comment '页面名称', > page_url string comment '页面URL' > )原创 2021-03-10 20:46:52 · 1779 阅读 · 0 评论 -
hive 去掉字符串以数字开头的部分
-- 去掉数字开头select regexp_replace('09部门22','^[0-9]+','');结果是:"部门22"-- 去掉数字select regexp_replace('09部门22','[0-9]','');结果是:"部门"原创 2021-03-10 13:08:39 · 3584 阅读 · 0 评论 -
Impala 自动刷新 hive 元数据原理
描述:目前,在lmpala中,有多种方法可以使存储在catalog中的表元数据失效或刷新。Catalog中的对象可以根据基于使用的方法(invalidate_tables_timeout_s)或在存在GC压力(invalidate_tables_on_memory_pressure)时失效(IMPALA-7448)。然而,大多数用户在想要同步到HDFS或HMS的最新信息时都会使用invalidate 命令。然而,当数据被修改或在Impala(如Hive)或不同的Impala集群之外添加新的数据时,用户.原创 2021-03-10 11:33:14 · 2045 阅读 · 1 评论 -
大数据项目之用户行为分析实战【转载】
大数据架构介绍一般企业大数据架构图LAMBDA架构介绍(了解)大概思路:将大数据系统构建为多个层次,三层架构:批处理层、实时处理层、服务层https://blog.csdn.net/u013368491/article/details/71271864大数据团队组织结构数据平台负责人数据平台架构师大数据开发(ETL开发、数仓开发)深度学习/AI工程师BI思考题、从零开始组建公司的大数据集群如何确认集群规模?假设每台服务器8T硬盘使用Apache/CDH/HDP版本?服务器原创 2021-03-05 20:26:03 · 1947 阅读 · 0 评论 -
Materialized views (Hive 物化视图 官方文档摘抄)
本文由 简悦 SimpRead 转码, 原文地址 cwiki.apache.org本文是直接从hive官方文档上摘抄。Version informationMaterialized views support is introduced in Hive 3.0.0.IntroductionThis page documents the work done for the supporting materialized views in Apache Hive.ObjectivesTradi.原创 2021-03-04 16:08:25 · 869 阅读 · 1 评论 -
hive load data inpath 可以将文件夹内的数据load到表里吗
hive load data inpath 可以直接将文件夹加载到HIve table中:官方文档:参考: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-Loadingfilesintotables原创 2021-01-28 09:02:44 · 1472 阅读 · 0 评论 -
Hive函数大全-官方文档
hive 函数大全:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF原创 2021-01-23 12:29:25 · 962 阅读 · 0 评论 -
Flink连接Hive代码测试案例
import org.apache.flink.table.api.{EnvironmentSettings, StatementSet, Table, TableEnvironment, TableResult}import org.apache.flink.table.catalog.hive.HiveCatalogimport org.apache.flink.types.Rowimport org.apache.flink.util.CloseableIterator/** * @pa原创 2021-01-15 09:48:55 · 1384 阅读 · 1 评论 -
hive 解决 ALTER TABLE cannot be used for a non-native table
hive on es 表中配置的es.nodes节点下线了怎么处理前提描述hive on es表中有一个属性es.nodesCREATE EXTERNAL TABLE `es_xxx`(xxx...)ROW FORMAT SERDE 'org.elasticsearch.hadoop.hive.EsSerDe' STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' WITH SERDEPROPERTIES (原创 2021-01-13 17:49:30 · 2796 阅读 · 4 评论 -
hive分区表插入/导入数据
数据库分区的主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间,主要包括两种分区形式:水平分区与垂直分区。水平分区是对表进行行分区。而垂直分区是对列进行分区,一般是通过对表的垂直划分来减少目标表的宽度,常用的是水平分区.1. hive建立分区表create external table if not exists tablename(a string,b string)partitioned by (year string,month string)row format deli原创 2021-01-12 17:07:33 · 14939 阅读 · 0 评论 -
Hive 表备注中文乱码
这个还是因为编码的问题:hive元数据表以及字段默认编码是 latin1,需要修改为utf8执行如下语句即可:alter table partition_keys modify column PKEY_COMMENT varchar(4000) character set utf8;如果已经乱码的,不方便再重新建hive表,可以直接去mysql表中找到对应的记录,直接修改元数据即可。...原创 2021-01-12 15:06:42 · 689 阅读 · 0 评论 -
hive jdbc连接报错 thrift.TApplicationException: Required field ‘client_protocol‘ is unset !
10:50:13.115 [main] ERROR org.apache.hive.jdbc.HiveConnection - Error opening sessionorg.apache.thrift.TApplicationException: Required field 'client_protocol' is unset! Struct:TOpenSessionReq(client_protocol:null, configuration:{set:hiveconf:hive.server2.原创 2021-01-12 11:04:24 · 1564 阅读 · 0 评论 -
Hive修改表名,列名,列注释,表注释,增加列,调整列顺序,属性名等操作
文章转载自https://blog.csdn.net/helloxiaozhe/article/details/80749094Alter Table 语句Hive修改表名,列名,列注释,表注释,增加列,调整列顺序,属性名等操作它是在Hive中用来修改的表。语法声明接受任意属性,我们希望在一个表中修改以下语法。ALTER TABLE name RENAME TO new_nameAL...原创 2020-02-27 15:40:58 · 1098 阅读 · 0 评论