中国民航机场建设集团公司网站应用商城app下载

pingmian/2025/10/8 8:22:27/文章来源:
中国民航机场建设集团公司网站,应用商城app下载,重庆网络网站建设,wordpress 主题 菜单8.22笔记 8.22笔记一、Hive的HQL语法重点问题1.1 DDL1.1.1 Hive中数据表的分类问题1.1.2 特殊的数据类型 1.2 DML1.3 DQL1.3.1 查询语法和MySQL大部分都是一致的 1.4 讲了三个数据库的可视化工具1.4.1 navicat1.4.2 dbeaver1.4.3 chat2db 二、Hive中重点问题#xff1a;Hive函… 8.22笔记 8.22笔记一、Hive的HQL语法重点问题1.1 DDL1.1.1 Hive中数据表的分类问题1.1.2 特殊的数据类型 1.2 DML1.3 DQL1.3.1 查询语法和MySQL大部分都是一致的 1.4 讲了三个数据库的可视化工具1.4.1 navicat1.4.2 dbeaver1.4.3 chat2db 二、Hive中重点问题Hive函数的使用2.1 函数分为两种2.1.1 内置函数 2.2 用户自定义函数2.2.1 Hive自定义函数的步骤2.2.2 自定义UDF函数2.2.3 自定义UDTF函数2.2.4 删除自定义函数 三、相关代码 8.22笔记 一、Hive的HQL语法重点问题 1.1 DDL 1.1.1 Hive中数据表的分类问题 Hive中数据表的分类只是用来告诉我们Hive底层在HDFS上存储的文件的规则和规范 1.1.2 特殊的数据类型 array、map、struct Hive数据表可以指定底层的存储格式的分隔符问题row format 1.2 DML Hive中默认不支持批量的删除和更新操作 增加数据 装载数据追加和覆盖 删除数据只能删除所有数据或者某个分区的数据–truncate数据导入和导出问题 1.3 DQL 1.3.1 查询语法和MySQL大部分都是一致的 排序问题 全局排序DQL查询语法转换的MR底层只有一个reduce任务 order by 局部排序DQL查询语法转换的MR底层可以有多个reduce任务每个reduce的输出有序整体没有顺序sort by 如果要使用sort by进行局部排序那么需要设置Hive底层的转换的MR程序的reduce任务数大于1 set mapreduce.job.reducesnum1 注意如果我们只是使用了sort by进行排序并且reduce的任务数大于1那么mr程序计算的时候底层会对数据进行分区分区数就是reduce的任务数默认情况下,如果只使用了sort by那么分区机制我们是无法控制 如果我们在局部排序的时候还想控制每个分区的数据可以在sort by之前增加上一个distribute By 字段Distribute By和sort by结合使用的是用于负责控制分区规则的。分区规则是根据我们指定的分区字段的hash值和分区数取余数。 如果Distribute By和sort by的字段一样我们可以使用cluster by替代上述两个操作 连接查询 Hive支持了全外连接full join 1.4 讲了三个数据库的可视化工具 1.4.1 navicat 界面特别好看的收费的 一般只能连接RDBMS关系型数据库连接底层不是基于JDBC 1.4.2 dbeaver 1.4.3 chat2db 增加了AI大模型 1.4.2~1.4.3都是免费的底层都是基于JDBC连接数据库 因此这两个软件不仅可以连接常见的RDBMS还可以连接大数据环境Hive、Spark等等 二、Hive中重点问题Hive函数的使用 Hive中提供了很多的自带函数自带函数有大部分都是为了统计分析设计的。Hive中的函数大部分都是一个Java类 2.1 函数分为两种 UDF一对一函数 UDTF一对多函数 UDAF多对一函数 2.1.1 内置函数 如何查看系统自带的内置函数 show functions; desc function 函数名; desc function extended 函数名; Hive中常见的一些内置函数的用法 数学函数:UDF 函数名说明abs(x)返回x的绝对值ceil(x)向上取整返回比x大的正整数中最小的那一个floor(x)向下取整mod(a,b)a%bpow(a,b)a^bround(x,[n])四舍五入 如果不传递n 代表小数点不保留如果n1 代表小数点后保留n位sqrt(x)根号x 字符串函数 函数名说明concat直接拼接拼接需要传递多个参数会把多个参数拼接起来如果有一个参数为null值那么结果直接为nullconcat_ws可以拼接的分隔符传递的第一个参数是一个分隔符如果拼接了null值null值不计算lpad |rpad(str,x,pad)在str左/右边以指定的pad字符填充字符串到指定的x长度ltrim|rtrim|trim(str)去除空格length(x)返回字符串的长度replace(str,str1,replacestr)将字符串中指定字符串替换成为另外一个字符串everse(str)字符串反转split(str,x):array字符串切割substr|substring(str,n,[num])截取字符串 日期 函数名说明current_date()返回当前的日期 年月日current_timestamp()返回当前时间date_format(date,“格式”)格式化时间的datediff(date,date1)返回这两个时间的差值天 条件判断函数 函数名ifcase when then [when then] … else end 特殊函数 和数组、集合操作有关的函数 函数内部需要传递一个数组或者返回值是一个数组类型的函数 函数名说明split(str,spea):arraycollect_set(列名)array将一列中的所有行的数据封装为一个数组 列转行 不允许重复将一列中的所有行的数据封装为一个数组 列转行 允许重复array(ele…):arraymap(key,value,key,value,key,value…):mapconcat_ws(spe,array(string))String将一个数组中的所有字符串以指定的分隔符拼接得到一个全新的字符串explodearray,map集合多行多列的数据 炸裂函数 行转列的函数 如果传递的是array,那么结果是一列多行如果传递的是map集合那么结果就是两列多行 collect_set(列名)array、collect_list(列名)array 列转行函数 将一列的多行数据转换成为一行数据 UTAF 和字符串有关的特殊函数字符串必须得是URL URL的概念 URL是叫做统一资源定位符是用来表示互联网或者主机上的唯一的一个资源的 URL整体上主要有如下几部分组成的 协议http/https、ftp、file、ssh host主机名、域名、ip地址 port端口号 path资源路径 queryParam参数 ?keyvaluekeyvalue… 例子 http://192.168.35.101:9870/index.html?namezsage20 https://www.baidu.com/search/a?keyvalueURL 中如果没有写端口号那么都是有默认端口http:80 https:443 ssh:22 parse_urlurlstr,特殊字符string一次只能提取URL的一个成分 parse_url_tuple(urlstr,特殊字符...)每一个成分当作一列单独展示函数可以将一个数据转换成为一行多列的数据函数多了一个特殊字符QUERY:key parse_url_tuple(urlstr,特殊字符...) as (列名...) 2、3 hive提供用来专门用来解析URL的函数从URL中提取URL组成成分 特殊字符代表的是URL的组成成分特殊字符有如下几种 HOST提取URL中的主机名、IP地址 PATH,提取URL中资源路径 QUERY, 提取URL中的所有请求参数 PROTOCOL, 提起URL中的请求协议 AUTHORITY, FILE, USERINFO, REF, 侧视图 侧视图Lateral View专门用来和UDTF函数结合使用用来生成一个虚拟表格然后这个虚拟表格一行数据会生成一个虚拟表格是动态的一行数据会生成一个虚拟表格生成的虚拟表格和当前行做一个笛卡尔乘积得到一些我们普通SQL无法实现的功能侧视图使用场景一个表格中某一行的某一列是一个多字段组成的数据我们想把多字段的列拆分开和当前行结合得到一个多行的结果。 开窗函数 overselect子语句中 开窗函数指的是在查询表数据时将表按照指定的规则拆分成为多个虚拟窗口并没有真实的拆分、类似于分组然后可以在窗口中得到一些只有分组之后才能得到一些信息然后将信息和原始数据结合起来实现在同一个查询中既可以得到基础字段还可以得到聚合字段。既需要普通字段还需要一些聚合信息的时候开窗函数就是最完美的选择。 语法 函数(参数) over(partition by 列名 order by 字段) as 别名-列名 可以和窗口函数结合使用的主要有三种类型的函数 first_value(col)|last_value(col) over(partition by 列名 order by 字段) as 别名-列名 聚合函数 sum/avg/count/max/min over(partition by 列名) as 列别名 排名函数 row_number()/rank()/dense_rank() over(partition by 列名 order by 字段) as 列别名 排名函数的作用就是对数据开窗之后查询到某一行数据之后看一下这行数据在所属窗口的排名-位置然后根据位置打上一个序号序号从1开始 函数名说明row_number()序号是从1开始依次递增如果两行数据排名一致也会依次编号rank()序号是从1开始依次递增如果两行数据排名一致两行编号一样的 跳排名dense_rank()序号是从1开始依次递增如果两行数据排名一致也会依次编号,不会跳排名 使用场景求不同组中排名topN的数据信息 2.2 用户自定义函数 用户自定义函数就是我们觉得hive内置函数不满足我们的需求我们可以自定义函数实现我们想要的功能 2.2.1 Hive自定义函数的步骤 Hive底层也都是Java自定义函数也是编写Java代码的 创建一个Java项目 引入编程依赖 创建lib目录自己找jar包放到lib目录下然后lib目录add as library hive的安装目录的lib目录下使用maven然后根据gav坐标引入依赖 编写对应的函数类UDF、UDTF、UDAF 大部分自定义都是UDF和UDTF函数 将编写好的Java代码打成jar包 将jar包上传到HDFS上 通过create function …从jar包以全限定类名的方式创建函数 注意自定义的函数创建的时候有两种创建方式 create [temporary] function function_name as “全限定类名” using jar “jar包在hdfs上的路径” 临时函数只对本次会话有效 只可以通过show functions查看元数据库不会记录永久函数永久生效 无法通过show functions查看,但是可以通过Hive的元数据库的FUNS表中查看 2.2.2 自定义UDF函数 2.2.3 自定义UDTF函数 2.2.4 删除自定义函数 drop function 函数名 【注意】用户自定义函数有一个特别重要的问题自定义函数和数据库绑定的。只能在创建函数的数据库使用函数。如果要在其他数据库下使用需要在其他数据库下把函数重新创建一遍即可。 三、相关代码 -- 查看hive自带的所有函数 show functions; -- 查看某个函数的用法 desc function abs; -- 查看某个函数的详细用法 desc function extended parse_url;select sqrt(8);create table demo(name string ); insert into demo values(zs),(ls),(ww); select * from demo; select concat_ws(-,collect_set(name)) from demo;select concat_ws(-,name) from demo; select concat_ws(-,zs,ls,null);select rpad(zs,10,-);select ltrim( z s ); select rtrim( z s ); select trim( z s );select replace(2022-10-11,-,/); select reverse(zs); select split(zs-ls-ww,-);select substring(zs is a good boy,9);select current_timestamp(); select date_format(2022-10-11 20:00:00,HH) select datediff(current_date(),2000-10-11);select if(12,zs,ls); select CASE 10when 10 then zswhen 20 then lselse wwENDselect CASE when 12 then zswhen 12 then lselse wwENDselect explode(array(1,2,3,4,5)); select map(name,zs,age,20,sex,man); select explode(map(name,zs,age,20,sex,man));select parse_url(http://www.baidu.com:80/search/a?namezsage30,QUERY); select parse_url_tuple(http://www.baidu.com:80/search/a?namezsage30,QUERY,PATH,HOST,QUERY:sex) as (query,path,host,sex);-- 侧视图的使用 create table test(name string,age int,hobby arraystring );insert into test values(zs,20,array(play,study)),(ls,30,array(sleep,study)); select * from test;select name,age,hobby,temp.hb from test lateral view explode(hobby) temp as hb;-- 开窗函数的使用 create table student(student_name string,student_age int,student_sex string );insert into student values(zs,20,man),(ls,20,woman),(ww,20,man),(ml,20,woman),(zsf,20,man);select * from student;-- 查询不同性别的总人数 select student_sex,count(1) from student group by student_sex; -- 查询表中所有的学生信息并且每个学生信息后面需要跟上这个学生所属性别组的总人数 select student_name,student_age,student_sex,row_number() over(partition by student_sex order by student_name desc) as sex_count from student;-- 排名函数的使用场景 create table employees(employees_id int,employees_name string,employees_dept int,employees_salary double );insert into employees values(1,zs,1,2000.0),(2,ls,1,1800.0),(3,ww,1,1700.0),(4,ml,1,2000.0),(5,zsf,1,1900.0),(6,zwj,2,3000.0),(7,qf,2,2500.0),(8,cl,2,2500.0),(9,jmsw,2,2000.0);select * from employees; -- 获取每个部门薪资排名前二的员工信息 -- 部门分组 薪资降序排序 排名窗口函数 给每一行数据打上一个序号 select * from(select *,DENSE_RANK() over(partition by employees_dept order by employees_salary desc) as salary_rankfrom employees ) as b where salary_rank 2;package com.sxuek.udf;import org.apache.hadoop.hive.ql.exec.UDFArgumentException; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.udf.generic.GenericUDF; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;/*** 类就是从一个字符串中找大写字符个数的函数* UDF*/ public class FindUpperCount extends GenericUDF {/*** 初始化方法方法是用来判断函数参数的* 指定函数参数的个数以及函数参数的类型* param objectInspectors 函数参数的类型和个数的一个数组* return 方法的返回值代表的是函数执行完成之后的返回值类型* throws UDFArgumentException*/Overridepublic ObjectInspector initialize(ObjectInspector[] objectInspectors) throws UDFArgumentException {/*** 1、判断参数的类型和个数是否满足需求*///数组的长度就是函数参数的个数int length objectInspectors.length;if (length ! 1){throw new UDFArgumentException(function only need one param);}else{//ObjectInspector是一个Hive数据类型的顶尖父类 参数的类型ObjectInspector objectInspector objectInspectors[0];//PrimitiveObjectInspectorFactory是Hive中所有基础数据类型的工厂类//返回函数的执行完成之后输出的结果类型 整数类型return PrimitiveObjectInspectorFactory.javaIntObjectInspector;}}/*** 方法就是函数实现的核心逻辑方法* param deferredObjects 函数传递的参数* return 返回值就是函数执行完成之后的返回结果 返回结果必须和initialize的返回值类型保持一致* throws HiveException*/Overridepublic Object evaluate(DeferredObject[] deferredObjects) throws HiveException {//获取函数传递的那一个参数DeferredObject deferredObject deferredObjects[0];//get方法是获取封装的参数值Object o deferredObject.get();String str o.toString();int num 0;for (char c : str.toCharArray()) {if (c 65 c 90){num;}}return num;}/*** HQL的解析SQL的输出----没有用处* param strings* return*/Overridepublic String getDisplayString(String[] strings) {return ;} } package com.sxuek.udtf;import org.apache.hadoop.hive.ql.exec.UDFArgumentException; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.udf.generic.GenericUDTF; import org.apache.hadoop.hive.serde2.objectinspector.*; import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;import java.util.ArrayList; import java.util.List;/*** 输入参数有两个* 字符串* 分隔符* 输出结果 一列多行的结果* word* zs* ls*/ public class SplitPlus extends GenericUDTF {/*** 作用* 1、校验输入的参数* 2、返回UDTF函数返回的列的个数、名字、类型* param argOIs 当作一个数组来看里面多个参数组成的* return* throws UDFArgumentException*/Overridepublic StructObjectInspector initialize(StructObjectInspector argOIs) throws UDFArgumentException {List? extends StructField allStructFieldRefs argOIs.getAllStructFieldRefs();if (allStructFieldRefs.size() ! 2){throw new UDFArgumentException(function need two params);}else{/*** 返回一列多行 UDTF函数也可以返回多行多列*///返回的列的名字 是一个集合 集合有几项 代表UDTF函数返回几列ListString columnNames new ArrayList();columnNames.add(word);//返回的列的类型 集合的个数必须和columnNames集合的个数保持一致ListObjectInspector columnTypes new ArrayList();columnTypes.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector);//构建StandardStructObjectInspector需要两个List集合 ListString ListObjectInspectorStandardStructObjectInspector standardStructObjectInspector ObjectInspectorFactory.getStandardStructObjectInspector(columnNames,columnTypes);return standardStructObjectInspector;}}/*** UDTF函数执行的核心逻辑* 结果的输出需要借助forward方法* param objects 函数的输入参数* throws HiveException*/Overridepublic void process(Object[] objects) throws HiveException {String str objects[0].toString();String split objects[1].toString();String[] array str.split(split);for (String s : array) {//一行输出需要输出一次 如果输出一行数据 那么只需要调用一次forward方法即可/*** 如果一行数据有多列可以先创建一个List集合ListObject 集合中把一行的多列值全部加加进来*/forward(s);}}/*** close用于关闭一些外部资源* throws HiveException*/Overridepublic void close() throws HiveException {} }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

奥迪汽车建设网站百度销售系统登录

From: http://www.crifan.com/python_third_party_lib_html_parser_beautifulsoup/ 背景 在Python去写爬虫,网页解析等过程中,比如: 如何用Python,C#等语言去实现抓取静态网页抓取动态网页模拟登陆网站 常常需要涉及到HTML等网…

厦门手机网站建设是什么意思商业计划书ppt免费模板下载

要想成为越来越吃香的IC工程师,就会先经历初期的成长阶段。今天就来聊聊初入行的ICer如何快速提升自己的竞争力(验证篇)。 首先希望大家在选择IC行业的时候就有清晰的认知,这是一个不得不深耕技术的行业。我们今天所谈论的快速提…

北京网站定制建设17网站一起做网店潮汕

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 摘记以下格言,愿已今生不忘:------------------------------------------------------- 1) 忽视就是一种认输。 …

适合seo优化的站点免费注册google账号

python中空格属于字符吗?答案是肯定的,空格在Python中也是属于字符的。案例:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。#!/usr/bin/python# -*- coding: UTF-8 -*-import strings raw_input(input a st…

基于个性化推荐的电商网站设计与实现seo实战密码在线阅读

们有不同类型的小部件用于不同的目的,帮助我们简化操作。小部件用于使代码变得简单且用户友好,这将有助于软件的编码和编程方面。在 Odoo 14 开发中,我们可以利用不同的小部件,这些小部件可用于编程操作的某些特定方面。这些简化工…

杭州模板建站代理制作网站服务

html判断当前页面是否在iframe中的实例在做HTML页面的时候,经常会遇到“如果当前页面显示在iframe中,我们就相应的处理”判断方法为://判断是否在iframe中if(self!top){parent.window.location.replace(window.location.href);}以上这篇html判…

站点建设方案宜宾建设教育培训中心网站

众所周知,光纤收发器是一种将双绞线电信号和光纤的光信号进行互换的以太网传输设备,因此也被称为光电转换器。使用光纤收发器可以将网络的传输距离延伸到100公里以上。相信大家在光纤收发器使用过程中,有时候会遇到一些问题的,最近进碰到有用…

陕西省信用建设官方网站线上推广公司

建筑行业快速发展,各建筑工程的建设规模在不断扩大,各岗位工作人员的工作内容所涉及的方面也越来越广泛。随着信息技术水平不断提高,人工记录的方式已经不能够满足大项目的管理要求,就此,创造出一种新型的施工管理技术——智慧工地…

网站建设费税率多少钱xyz域名

目录 一、实现消息持久化 1.1、消息的存储设定 1.1.1、存储方式 1.1.2、存储格式约定 1.1.3、queue_data.txt 文件内容 1.1.4、queue_stat.txt 文件内容 1.2、实现 MessageFileManager 类 1.2.1、设计目录结构和文件格式 1.2.2、实现消息的写入 1.2.3、实现消息的删除…

自己网站可以加标志吗福州网站建设 网站设计 网站制作

Prompts ​ 语言模型的提示是用户提供的一组指令或输入,用于指导模型的响应,帮助模型理解上下文并生成相关且连贯的基于语言的输出,例如回答问题、完成句子或参与某项活动。对话。 关键问题 如何在LLMs中使用少量示例(few-shot examples)—…

网页设计相关的网站99国精产品灬源码的优势

来一个简单的例子,看Python如何操作数据库,相比Java的JDBC来说,确实非常简单,省去了很多复杂的重复工作,只关心数据的获取与操作。准备工作需要有相应的环境和模块:Ubuntu 14.04 64bitPython 2.7.6MySQLdb注…

自己建网站做那个模块好做摘抄的网站

目录 背影 摘要 代码和数据下载:基于长短期神经网络lstm的求解方程资源-CSDN文库 https://download.csdn.net/download/abc991835105/87657743 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络lstm的求解方程 结果分析 展望 参考论文 背影 方程求解,为提高精度,本文用L…

升级网站温州建站程序

http://www.cnblogs.com/itech/archive/2012/05/15/2502284.html转载于:https://www.cnblogs.com/zengkefu/p/5529576.html

药品招商网站大全一般人做不了咨询顾问

一、需求 在项目启动时,自动新建数据表 二、实现思路 创建触发类 实现SpringBoot的ApplicationRunner接口 编写建表语句常量 实现run方法,并在run方法中使用JDBC工具类的建表方法,传入建表语句常亮,完成建表 三、代码实现&…

网站内容建设包括wordpress安装显示英文

就按照最后一章的顺序来说吧。很多名字都不知道中文该怎么说,就直接用英文名称了。 Naive Bayesian Classifier 朴素贝叶斯分类器nb算法是通过学习样本中已经分类的条目,计算生成条目中的特性相对于类别的概率矩阵,然后根据待分类条目中特性在…

网站制作语言wordpress去除文章rss

第三届网络安全、人工智能与数字经济国际学术会议(CSAIDE 2024) 2024 3rd International Conference on Cyber Security, Artificial Intelligence and Digital Economy 第三届网络安全、人工智能与数字经济国际学术会议(CSAIDE 2024&…

唐山网站建设赫鸣科技新浪云服务器做网站

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练 Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以…

py做网站会员积分系统

文章目录 一、文本类型(字母、符号或数字字符的组合)二、整数类型三、精确数字类型四、近似数字(浮点)类型五、日期类型六、货币类型七、位类型八、二进制类型 一、文本类型(字母、符号或数字字符的组合) 在…

做网站ps图片都是多大淘宝网是中国最大的c2c平台

7.3 表单组件 7.3.1 picke-view与picker-view-column组件 一个picker-view-column代表 一个滚动选择器子项,一个picker-view组件可以包含多个picker-view-column组件,这样可以一次性选择多项内容如年、月、日等。 picker-view-column组件中需包含多个…