udf

Calculate number of days excluding sunday in Hive

元气小坏坏 提交于 2020-06-12 05:40:26
问题 I have two timestamps as input. I want to calculate the time difference in hours between those timestamps excluding Sundays. I can get the number of days using datediff function in hive. I can get the day of a particular date using from_unixtime(unix_timestamp(startdate), 'EEEE'). But I dont know how to relate those functions to achieve my requirement or is there any other easy way to achieve this. Thanks in Advance. 回答1: You can write one custom UDF which takes two columns containing the

KSQL和Flink SQL的比较

坚强是说给别人听的谎言 提交于 2020-05-07 22:09:45
  Confluent公司于2017年11月宣布KSQL进化到1.0版本,标志着KSQL已经可以被正式用于生产环境。自那时起,整个Kafka发展的重心都偏向于KSQL——这一点可以从Confluent官方博客中KSQL出现的频率之高看出端倪。鉴于最近周围有很多小伙伴都在讨论KSQL,我突然想起了去年9月份Apache Flink“掌门人” Stephan Ewen所写的关于KSQL V.S. Flink SQL的一篇博客,里面很多有意思的观点非常值得品味~~     事情起源于去年8月底Confluent公司的产品经理Michael G. Noll在Twitter上发布了一条消息:   大概的意思是KSQL和Flink SQL一个关键的区别在于:KSQL是纯SQL语言的扩展,你不需要使用Java或Scala写程序的方式来实现,而反观上图右边的Flink SQL,用户必须手动编写一些代码与之结合使用。这样来看,使用KSQL要比Flink SQL简单得多。   发完这条Twitter之后,Flink掌门人Stephan Ewen立刻做出了回应: “如果这就是你说的KSQL相对于Flink SQL的最大优势,那么看看我下面的这20行代码,它已经‘修复’了你说的这个问题。。。。” 两人的”针锋相对“实在有些意思,特别是Stephan Ewen于第二天在Flink官方博客上发布了一篇博文

String类型的"字符"长度(码点/代码单元的区别)

你离开我真会死。 提交于 2020-05-06 03:18:41
查看String的源码可以发现它以一个char类型的数组保存字符串的,而String.length()方法返回的也是这个char数组的长度. 那么,这个长度和"字符"长度有什么关系呢? 在这里就不得不引入码点和代码单元的概念,以下是摘抄至《Java核心技术卷一基础知识(第十版)》中的定义: "码点( code point ) 是指与一个编码表中的某个字符对应的代码值。在Unicode 标准中,码点采用十六进制书写,并加上前缀U+, 例如U+0041 就是拉丁字母A 的码点。Unicode 的码点可以分成17 个代码级别( codeplane)。第一个代码级别称为基本的多语言级别( basic multilingual plane ), 码点从U+0000 到U+FFFF, 其中包括经典的Unicode 代码;其余的16个级另丨〗码点从U+10000 到U+10FFFF , 其中包括一些辅助字符(supplementary character)。UTF-16 编码采用不同长度的编码表示所有Unicode 码点。在基本的多语言级别中, 每个字符用16 位表示,通常被称为代码单元( code unit ) ; 而辅助字符采用一对连续的代码单元进行编码。这样构成的编码值落人基本的多语言级别中空闲的2048 字节内, 通常被称为替代区域(surrogate area) [ U+D800 ~

unicode Java中求字符串长度length()和codePointCount()的区别

假装没事ソ 提交于 2020-05-06 02:35:00
在计算字符串长度时,Java的两种方法length()和codePointCount()一度让我困惑,运行书上例子得到的长度值是相等的,那为什么要设定两个方法呢? 对于普通字符串,这两种方法得到的值是一样的,但对于UniCode的编码来说,还是有一点区别。 常用的uniCode字符使用一个代码单元就可以表示,但有些辅助字符需要一对代码单元表示。 比如整数集合的数学符号"Z"(没办法打出来),它的代码点是U+1D56B,但它的代理单元是U+D835和U+DD6B,如果令字符串str = "/u1D56B",机器识别的不是"Z",而是一个代码点”/u1D56“和字符”B“,所以会得到它的代码点数是2,代码单元数也是2。 但如果令字符str = "/uD835/uDD6B",那么机器会识别它是2个代码单元代理的1个代码点”Z“,故而,length的结果是代码单元数量2,而codePointCount()的结果是代码点数量1. codePointAt(int index) 返回指定索引处的字符(Unicode 代码点) 𫁝 ==\uD869\uDF17 ==\u2a717 String str = "我是中国人\uD869\uDF17"; final int count = str.codePointCount(0,str.length()); for(int i = 0;i<count

Hive 总结[鹏哥出品,必属精品]

∥☆過路亽.° 提交于 2020-05-05 20:37:45
Hive 总结 总结人:连志鹏 2020.04.29 一、HiveJDBC客户端基本操作 1.1 HvieJDBC的登入与退出 -- 方式一:使用beeline方式 访问方式:beeline - u jdbc:hive2: //hadooop102:10000 -n atguigu 退出方式:!quit 、 ! exit 、 ctrl + c -- 方式二: 使用hive的方式 访问方式:hive 退出方式:quit; exit ; 1.2 Hive常用的交互命令 “-e” 不进入hive的交互窗口执行sql语句** “-f” 执行脚本中sql语句** 1.3 Hive数据类型 基本数据类型 Hive数据类型 Java数据类型 长度 例子 TINYINT byte 1byte有符号整数 20 SMALINT short 2byte有符号整数 20 INT int 4byte有符号整数 20 BIGINT long 8byte有符号整数 20 BOOLEAN boolean 布尔类型,true或者false TRUE FALSE FLOAT float 单精度浮点数 3.14159 DOUBLE double 双精度浮点数 3.14159 STRING string 字符系列。可以指定字符集。可以使用单引号或者双引号。 ‘now is the time’ “for all good

MaxCompute 基本概念与术语

给你一囗甜甜゛ 提交于 2020-05-01 14:02:06
项目空间 • 项目空间(Project)是MaxCompute的基本组织单元,类似于传统数据库的DataBase或Schema的概念,是进行多用户隔离和访问控制的主要边界。项目空间中包含多个对象,例如表(Table)、资源(Resource)、函数(Function)和实例(Instance)等。 • 一个用户可以同时拥有多个项目空间的权限。通过安全授权,可以跨项目空间访问对象。 • 通过在MaxCompute客户端中运行use project命令进入一个项目空间。 表 • 表是MaxCompute的数据存储单元,逻辑上是二维结构,MaxCompute中不同类型计算任务的操作对象(输入、输出)都是表。 • MaxCompute的表分为内部表和外部表(2.0版本开始支持)。 • 对于内部表,所有的数据都被存储在MaxCompute中。 • 对于外部表,MaxCompute并不真正持有数据,表格的数据可以存放在OSS或OTS中,MaxCompute仅会记录表格的Meta信息,OSS上的信息可以是非结构化的,例如视频、音频等。 • MaxCompute与Oracle等数据库不同,系统并不会自动创建dual表。 分区 • 分区表是指在创建表时指定分区空间,即指定表内的一个或某几个字段作为分区列。分区表实际就是对应分布式文件系统上的独立文件夹,该文件夹下是该分区的所有数据文件。 •

spark记录(13)SparkSQL

人走茶凉 提交于 2020-04-29 14:46:37
1.Shark Shark是基于Spark计算框架之上且兼容Hive语法的SQL执行引擎,由于底层的计算采用了Spark,性能比MapReduce的Hive普遍快2倍以上,当数据全部load在内存的话,将快10倍以上,因此Shark可以作为交互式查询应用服务来使用。除了基于Spark的特性外,Shark是完全兼容Hive的语法,表结构以及UDF函数等,已有的HiveSql可以直接进行迁移至Shark上Shark底层依赖于Hive的解析器,查询优化器,但正是由于SHark的整体设计架构对Hive的依赖性太强,难以支持其长远发展,比如不能和Spark的其他组件进行很好的集成,无法满足Spark的一栈式解决大数据处理的需求。 2.SparkSQL 1.SparkSQL介绍 Hive是Shark的前身,Shark是SparkSQL的前身,SparkSQL产生的根本原因是其完全脱离了Hive的限制。 SparkSQL支持查询原生的RDD。 RDD是Spark平台的核心概念,是Spark能够高效的处理大数据的各种场景的基础。 能够在Scala中写SQL语句。支持简单的SQL语法检查,能够在Scala中写Hive语句访问Hive数据,并将结果取回作为RDD使用。 2.Spark on Hive和Hive on Spark Spark on Hive: Hive只作为储存角色

[转帖]Greenplum :基于 PostgreSQL 的分布式数据库内核揭秘 (上篇)

淺唱寂寞╮ 提交于 2020-04-28 04:31:22
Greenplum :基于 PostgreSQL 的分布式数据库内核揭秘 (上篇) https: // www.infoq.cn/article/3IJ7L8HVR2MXhqaqI2RA 学长的文章.. 姚延栋 阅读数:714 2019 年 9 月 15 日 17:11 本文经授权转载自公众号 PostgreSQL 中文社区,主要介绍了 Greenplum 集群概述、分布式数据存储和分布式查询优化。 一、数据库内核揭秘 Greenplum 是最成熟的开源分布式分析型数据库(今年 6 月份预计发布的 Greenplum 6 之 OLTP 性能大幅提升,将成为一款真正的 HTAP 数据库,评测数据将于近期发布),Gartner 2019 最新评测显示 Greenplum 在经典数据分析领域位列全球第三,在实时数据分析领域位列并列第四。两个领域中前十名中唯一一款开源数据库产品。这意味着如果选择一款基于开源的产品,前十名中别无选择,唯此一款。Gartner 报告原文。 那么 Greenplum 分布式数据库是如何炼成?众所周知 Greenplum 基于 PostgreSQL。PostgreSQL 是最先进的单节点数据库,其相关内核文档、论文资源很多。而有关如何将单节点 PostgreSQL 改造成分布式数据库的资料相对较少。本文从 6 个方面介绍将单节点 PostgreSQL

【实战1】记一次提至administrator权限历程

孤者浪人 提交于 2020-04-28 04:19:39
本文首发于先知社区 https://xz.aliyun.com/t/5080 前言:这是一次挖掘 cms 通用漏洞时发现的网站,技术含量虽然不是很高,但是也拿出来和大家分享一下吧,希望能给一部分人带来收获。 0x01 进入后台 在通过 googlehack 语法挖掘 beescms 时发现了这个站点 利用网上的 payload ,在 /mx_form/mx_form.php?id=12 页面使用 hackbarPOST 以下数据 _SESSION[login_in]=1&_SESSION[admin]=1&_SESSION[login_time]=100000000000000000000000000000000000 然后访问 /admin 便可以直接进入后台 0x02 拿 shell 进入后台后在 ‘添加产品模块’处寻找到了上传点 尝试上马,但提示 ‘上传图片格式不正确’,于是上传图片马抓包,在 repeater 里更改后缀为 php ,然后 go 根据回显没有看出是否上传成功,但也没说失败。经过寻找在 ‘上传图片管理’处找到 点击图片发现解析了,直接菜刀连接,拿到 shell 0x03 绕过安全模式 拿到 shell 后进入终端查看权限,但却发现执行命令失败,可能远程启用了安全模式 经过在网上一番查找得出:要找到未禁用的 php 执行函数。先上传了一个查看 phpinfo

MySQL8.0.16新特性:The Communication Protocol In Group Replication

眉间皱痕 提交于 2020-04-27 07:15:03
MGR优雅升级到MySQL8.0.16   传统的升级手段之一,5.7 MGR集群与8.0 MGR集群进行数据传输,程序切换新集群后测试是否正常.   如果不正常,要么将新集群的新增数据同步回旧集群,要么就舍弃掉这部分数据,一般看来这种回滚都是繁琐的,繁琐的操作一般都会相应的增加风险。      8.0.16的发布也带来一个新的功能-MGR通信协议的支持,可以让我们更轻松地切换到8.0,或者轻松地再切换回5.7。那么什么是MGR通信协议呢? MGR通信协议(The Communication Protocol In Group Replication) 从MySQL 8.0.16中,MGR有一个通信协议的概念。可以直接管理MGR通信协议版本,并将其设置为适应你希望MGR成员支持的哪个MySQL服务器版本。 从而实现同一个MGR可用组中可以由不同MySQL服务器版本的成员组成。 是的你没有看错,也就是说: 成员1:8.0.16 ​成员2:8.0.16 成员3:5.7.22 ​他们可以组成一个MGR集群了。    无论从集群的迁移成本,应用程序切换过程的平滑度,回滚时数据一致性都可以更好的保障。   应用程序切换过程的平滑度:老司机会有感触,一般应用程序都是多个节点,每个节点访问新地址的生效存在时间差,会导致新旧节点会存在有数据同时写入情况,这个就会成为架构的设计的核心考虑之一。