hive的shims相关类分析 推荐 原创 菜菜光 2014-10-15 23:45:35 博主文章分类:hive ©著作权 文章标签 hive shims类 文章分类 Hive 大数据 ©著作权归作者所有:来自51CTO博客作者菜菜光的原创作品,请联系作者获取转载授权,否则将追究法律责任 在hive的源码中经常可以看到shims相关的类,shims相关类是用来兼容不同的hadoop和hive版本的,以HadoopShims为例org.apache.hadoop.hive.shims.HadoopShims是一个接口,具体的实现类为org.apache.hadoop.hive.shims.Hadoop20Shims org.apache.hadoop.hive.shims.Hadoop20SShims org.apache.hadoop.hive.shims.Hadoop23Shims具体对应的那个shims类在ShimLoader类(org.apache.hadoop.hive.shims.ShimLoader)中有所定义,以HADOOP_SHIM_CLASSES 为例: /** * The names of the classes for shimming Hadoop for each major version. */ private static final HashMap<String, String> HADOOP_SHIM_CLASSES = new HashMap<String, String>(); // 首先定义了一个hashmap static { HADOOP_SHIM_CLASSES.put( "0.20", "org.apache.hadoop.hive.shims.Hadoop20Shims" ); // 0.20 HADOOP_SHIM_CLASSES.put( "0.20S", "org.apache.hadoop.hive.shims.Hadoop20SShims" ); // 1.x和0.20 security版本的hadoop HADOOP_SHIM_CLASSES.put( "0.23", "org.apache.hadoop.hive.shims.Hadoop23Shims" ); // 2.x版本的hadoop } // 向hashmap中插入对应的项,key为version信息,value为实际对应的类ShimLoader类通过getHadoopShims方法返回具体的HadoopShims private static HadoopShims hadoopShims; ...... public static synchronized HadoopShims getHadoopShims() { if (hadoopShims == null) { hadoopShims = loadShims(HADOOP_SHIM_CLASSES, HadoopShims.class); // 调用loadShims方法 } return hadoopShims; }而loadShims方法通过判断hadoop的版本,来获取hashmap中对应的设置类 private static <T> T loadShims(Map<String, String> classMap, Class<T> xface) { String vers = getMajorVersion(); // 获取hadoop的版本 String className = classMap.get(vers); return createShim(className, xface); }具体哪个hadoop版本是由getMajorVersion获取,比如我们线上使用的是2.0.0-cdh4.6.0,那么getMajorVersion返回的值为0.23,对应的HadoopShims 实现类为org.apache.hadoop.hive.shims.Hadoop23Shims public static String getMajorVersion() { String vers = VersionInfo.getVersion(); // org.apache.hadoop.util.VersionInfo类的getVersion方法 比如2.0.0-cdh4.6.0 String[] parts = vers.split( "\\."); if (parts. length < 2) { throw new RuntimeException("Illegal Hadoop Version: " + vers + " (expected A.B.* format)"); } // Special handling for Hadoop 1.x and 2.x switch (Integer.parseInt(parts[0])) { case 0: break; case 1: return "0.20S"; case 2: return "0.23"; default: throw new IllegalArgumentException("Unrecognized Hadoop major version number: " + vers); } String majorVersion = parts[0] + "." + parts[1]; // If we are running a security release, we won't have UnixUserGroupInformation // (removed by HADOOP-6299 when switching to JAAS for Login) try { Class.forName("org.apache.hadoop.security.UnixUserGroupInformation" ); } catch (ClassNotFoundException cnf) { if ("0.20".equals(majorVersion)) { majorVersion += "S"; } } return majorVersion; }而不同的shims中规定了不同版本下的属性和方法等,比如判断是否localmode:1). Hadoop20SShims 类(Hadoop 0.20 with Security和1.x版本 ) @Override public boolean isLocalMode(Configuration conf) { return "local".equals(getJobLauncherRpcAddress(conf)); } @Override public String getJobLauncherRpcAddress( Configuration conf) { //通过判断mapred.job.tracker的设置 return conf.get( "mapred.job.tracker"); }2).Hadoop20Shims类 (Hadoop 0.20版本) 同上3).Hadoop23Shims (Hadoop 2.x版本) @Override public boolean isLocalMode( Configuration conf) { return "local".equals(conf.get("mapreduce.framework.name" )); //根据mapreduce.framework.name设置 } 赞 收藏 评论 分享 举报 上一篇:hive启动debug问题 下一篇:hive执行流程(2)-CommandProcessor相关类 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 Apache Hive Apache Hive的相关知识,包括简单介绍,环境配置,和使用简介 mysql Hive SQL hive表修改分区数据日期 在Hive中,表的分区是一种组织数据的方式,它允许将表中的数据根据一个或多个列的值进行划分。每个分区可以看作是表的一个子集,它包含具有特定列值的行。分区列通常用于经常查询的条件,这样可以提高查询效率,因为Hive可以在查询时只扫描相关的分区,而不是整个表。当需要修改Hive表中的分区数据日期时,通常是因为需要更新分区列中的日期值。这可能是因为数据已经发生变化,或者需要纠正分区数据。以下是详细步骤和 数据 Hive 原始数据 大数据从业者必知必会的Hive SQL调优技巧 | 京东云技术团队 摘要:在大数据领域中,Hive SQL被广泛应用于数据仓库的数据查询和分析。然而,由于数据量庞大和复杂的查询需求,Hive SQL查询的性能往往不尽人意。本文针对Hive SQL的性能优化进行深入研究,提出了一系列可行的调优方案,并给出了相应的优化案例和优化前后的SQL代码。通过合理的优化策略和技巧,能够显著提升Hive SQL的执行效率和响应速度。**关键词:**Hive SQL;性能优化;调优 数据 SQL Hive shims-vue.d.ts 解析 TypeScript的文档看起来比较让人匪夷所思 TS是从2012年就开始的项目,那时ES6的模块化还没有成为继定标准,所以今天来看TS中一些名词让人匪夷所思,其实都是历史遗留问题 比如namespace 原来也叫module,是internal module, 而module被称为external TypeScript typescript 模块化 构造器 html containerd-wasm-shims k8s 运行webassembly 的containerd shim containerd-wasm-shims 属于一个包装,基于了runwasi 可以实现在k8ss 中运行webassembly 工作负载,使用上提供了多种wasm 应用runtim github 参考资料 WebAssembly 【Hive】Hive 基础 Hive架构: Hive基础 Hive基础 1 概念 1 概念 1.1 简介 1.1 简介 1.1.1 hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表, 并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。--OLAP 1.1.1 hive 基础 Hive——hive安装 1、Hive安装地址 1.Hive官网地址 http://hive.apache.org/ 2.文档查看地址 https://cwiki.apache.org/confluence/display/Hive/GettingStarted 3.github地址 https://github.com/apache/hive2、Hive安装... Hive Hive安装 hive mysql hadoop 【Hive】Hive 查询 文章目录一、环境准备二、Hive 查询1、普通查询2、别名查询3、限定查询4、多表ype) 5 个字段,字符类型为.. hive hadoop big data 字段 hive 升级 hive # 升级 HiveHive 是一个基于 Hadoop 的数据仓库工具,它提供了类似于 SQL 的查询语言 HiveQL,允许用户使用类似于 SQL 的语法来分析和处理大规模的数据。随着技术的发展,Hive 也在不断演进,推出了新版本以提供更好的性能和功能。在本文中,我们将讨论如何升级 Hive,以及一些常用的升级技巧和注意事项。## 1. 升级前的准备工作在升级 Hive 之前,我 Hive 新版本 hive 【Hive】Hive基础认识 Hive简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能,Hive底层是将SQL语句转换为MapReduce任务运行(类似于插件Pig\impala\Spark Sql)为什么使用HIVE直接使用 Hadoop 所面临的问题:人员学习成本太高项目周期要求 大数据技术 Hive # HIVE # Hive企业应用 一. 数据仓库架构设计数据仓库的主要工作就是ETL,即是英文 Extract-Transform-Load 的缩写,用来描述数据从来源端经过装载(load)、抽取(extract)、转换(transform)至目的端的过程。数据仓库架构设计,即为公司针对自身业务场景实现的水平分层、垂直分主题的数据仓库构建过程的顶层设计。1. 数据架构架构原则:先水平分层,再垂直分主题域。数据架构分三层源数据落地区 数据仓库 建模 数据模型 数据库 【Hive】- Note Of Hive Sql 1. 求累计频数SELECT ioverduedays, sum(overdue_num) AS overdue_num, SUM(SUM(overdue_nRECEDING A... hive 字符串 json [Hive进阶]- Hive with as 语法 前言 公用表表达式(CTE)是从WITH子句中指定的简单查询派生的临时结果集(会把查询的表数 Hive hive apache 表数据 hive with hive with语句 公用表表达式(CTE)是从WITH子句中指定的简单查询派生的临时结果集(会把查询的表数据放到内存中,供其他查询随时使用),该子句紧跟在SELECT或INSERT关键字之前。CTE仅在单个语句的执行范围内定义。可以在Hive SELECT,INSERT,CREATE TABLE AS SELECT 或 CREATE VIEW AS SELECT 语句中使用一个或多个CTE 。 Hive 结果集 表数据 hive使用in hive in 注:技术交流可以加我VX:k-loop,昵称:默读者。1,创建用户表 create table tmp_user(uid string comment'用户ID',name string comment'用户名')comment'用户表'; 插入测试数据 insert into tmp_user(uid,name) values('A','理 hive使用in left outer join join in hive uniq hive unique 1、列裁剪:在SELECT中,只拿需要的列,如果有,尽量使用分区过滤,少用SELECT *。 2、分区裁剪:先过滤在join,或者在on后带上过滤条件(最好先过滤在join) 3、尽量把count distinct 转成group by。(数据量小的时候无所谓,数据量大的情况下,由于COUNT DISTINCT操作需要用一个Reduce Task来完成,这一个Reduce需要处理的数据量太大,就会 hive uniq hive 数据倾斜 数据 hive flink hive flinkcdc 目录前言:新架构与湖仓一体一、版本说明二、编译打包hudi 0.10.0版本1.使用git克隆github上最新的master2.编译打包三、创建flink工程1.pom文件主要内容2.checkpoint3.flinkcdc代码4.hudi代码(具体参数可参考官网)5.捕获mysql变更并写入到hudi6.执行语句四、查看hudi文件目录1.mysql未插入数据 2.插入数据后查看hd hive flink hive big data 大数据 flink hive honey hive honeywell 一、Hive 概述及体系架构1.Hive 是什么 (1).由Facebook开源,最初用于解决海量结构化的日志数据统计问题 (2).是一个构建在Hadoop之上的数据仓库 (3).Hive定义了一种类似于SQL查询语言:HQL(非常类似于MySQL中的SQL语句,同时做了扩展) (4).通常用于离线数据处理(采用MapReduce) (5).可以认为是一个HQL=>MapReduce的语言翻 hive honey hive hadoop mysql Hive hive jason hive jsonserde 1、说明hive默认使用分隔符如空格,分号,"|",制表符\t来格式化数据记录,对于复杂数据类型如json,nginx日志等,就没有办法拆分了,这时候需要更加强大的SerDe来处理复杂数据,如使用JsonSerDe或者使用正则表达式RegSerDe来处理。2、下载jar包json-serde-1.3.8-jar-with-dependencies.jar:http://www.congiu.n hive jason jar hive json hive 平方 hive lpad 数据导入使用Load进行数据的导入LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE]INTO TABLE tablename [PARTITION (partcoll = vall , partcol2 = val2 ... )]示例//将student01.txt数据导入t2load data local inpath '/root/data/st hive 平方 hive Hive bc