Apache Spark 2.4 新增内置函数和高阶函数使用介绍

Similar documents
如何在 Apache Hive 中解析 Json 数组

通过Hive将数据写入到ElasticSearch

Guava学习之Resources

Spark读取Hbase中的数据

Apache CarbonData集群模式使用指南

Guava学习之CharSequenceReader

使用Cassandra和Spark 2.0实现Rest API服务

Flume-ng与Mysql整合开发

Hadoop&Spark解决二次排序问题(Hadoop篇)

SparkR(R on Spark)编程指南

使用MapReduce读取XML文件

Kafka客户端是如何找到 leader 分区的

Hive:用Java代码通过JDBC连接Hiveserver

使用Apache Beam读写HDFS上的文件

使用Hive读取ElasticSearch中的数据

使用Spark SQL读取Hive上的数据

韶关:神奇丹霞

哼, 你 們 不 回 答 又 怎 麼 樣? 不 管 是 多 大 來 頭, 現 在 都 被 血 魔 吞 噬 無 蹤 了 你 們 幾 個 真 是 太 過 分, 我 不 犯 你 們, 你 們 卻 一 天 到 晚 來 挑 釁 我 教 尊 冷 笑 著 說 道 嗚, 大 人 土 地 大 姐 跪 下 來, 流 下

六种使用Linux命令发送带附件的邮件

伊春:醉人林都

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

在Spring中使用Kafka:Producer篇

Hadoop元数据合并异常及解决方法

解决百度统计无法获取https来源的referrer

关林:武圣陵寝

泰山:五岳独尊

将 MySQL 的全量数据导入到 Apache Solr 中

国内26省市新能源汽车推广规划已出台

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

北戴河:海阔天空

江人发2009年第49号突发事件应对法培训.doc

三种方法实现Hadoop(MapReduce)全局排序(1)


西岭雪山滑雪场

, 即 使 是 在 昏 暗 的 灯 光 下, 她 仍 然 可 以 那 么 耀 眼 我 没 有 地 方 去, 你 会 带 着 我 么 杜 晗 像 是 在 嘲 笑 一 般, 嘴 角 的 一 抹 冷 笑 有 着 不 适 合 这 个 年 龄 的 冷 酷 和 无 情, 看 着 江 华 的 眼 神 毫 无 温

Flink快速上手(QuickStart)


31.17 世 纪 未, 英 国 一 刊 物 针 对 某 政 治 事 件 评 论 时 说 : 君 主 主 权 原 先 是 上 帝 赐 予 的, 现 在 则 被 认 为 是 人 民 授 予 的 此 评 论 主 要 针 对 的 是 A. 光 荣 革 命 推 翻 了 君 主 统 治 制 度 B. 责 任

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

江门:中国第一侨乡

是 喔, 就 是 那 個 在 BBS 醫 療 版 跟 你 嗆 聲, 自 稱 有 三 十 多 年 推 拿 經 驗 的 大 叔 嗎? 一 個 看 來 頗 為 清 秀 的 女 生 問 道, 她 語 氣 中 略 感 訝 異 是 啊, 什 麼 推 拿 按 摩 有 多 好, 還 要 人 生 病 盡 量 不 要

Spark1.4中DataFrame功能加强,新增科学和数学函数

21 个你应该知道的 wget 命令

Hive常用字符串函数

教育扩张能改善收入分配差距吗?——来自CHNS2006年数据的证据

山水文化,市井人家——以湖州邱城小镇的概念性规划为例

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

Spark作业代码(源码)IDE远程调试

在Fedora上部署Hadoop2.2.0伪分布式平台

行 业 市 场 研 究 属 于 企 业 战 略 研 究 范 畴, 作 为 当 前 应 用 最 为 广 泛 的 咨 询 服 务, 其 研 究 报 告 形 式 呈 现, 通 常 包 含 以 下 内 容 : 一 份 专 业 的 行 业 研 究 报 告, 注 重 指 导 企 业 或 投 资 者 了 解 该

Ubuntu和CentOS如何配置SSH使得无密码登陆


【主持人】:给大家介绍一下,这次的培训是我们画刊部的第三次培训,当然今天特别有幸请来著吊的摄影家李少白老师给我们讲课

树的非递归中序和层次遍历实现

三种恢复 HDFS 上删除文件的方法

行 业 市 场 研 究 属 于 企 业 战 略 研 究 范 畴, 作 为 当 前 应 用 最 为 广 泛 的 咨 询 服 务, 其 研 究 报 告 形 式 呈 现, 通 常 包 含 以 下 内 容 : 一 份 专 业 的 行 业 研 究 报 告, 注 重 指 导 企 业 或 投 资 者 了 解 该

Flink on YARN部署快速入门指南

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

01

行 业 市 场 研 究 属 于 企 业 战 略 研 究 范 畴, 作 为 当 前 应 用 最 为 广 泛 的 咨 询 服 务, 其 研 究 报 告 形 式 呈 现, 通 常 包 含 以 下 内 容 : 一 份 专 业 的 行 业 研 究 报 告, 注 重 指 导 企 业 或 投 资 者 了 解 该

// 获取并集 // set1.addall(set2); // 获取交集 set1.retainall(set2); // 打印操作结果 set1.foreach(o -> System.out.println(o)); 运行结果如图 6-1 所示 图 6-1 运行结果 三 案例总结 1 Coll

使用Apache Spark将数据写入ElasticSearch

2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 一 一 般 公 共 服 务 支 出 二

目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016

2016 年 地 质 工 程 系 教 学 工 作 安 排 2016 学 年 我 系 将 在 总 结 过 去 工 作 的 基 础 上, 结 合 今 年 学 院 以 抓 质 量 强 内 涵 促 改 革 调 结 构 建 品 牌 细 管 理 重 过 程 为 宗 旨, 以 规 范 管 理 深 化 内 涵 为


3 基 金 杠 杆 从 分 级 基 金 的 概 念, 我 们 知 道 了 分 级 基 金 的 A 份 额 是 每 年 获 得 固 定 收 益 的 稳 健 份 额,B 份 额 是 具 有 杠 杆 效 应 的 激 进 份 额 分 级 基 金 中 的 杠 杆 一 般 有 三 类 : 份 额 杠 杆 =(A

<4D F736F F D203136BCADBBD8D2E4D3EBD1D0BEBF2E646F63>

萧山中学课程建设方案.doc


Microsoft Word - 9pinggb_A4.doc

Microsoft Word - 9pinggb_A4-f4.doc

理 论 探 索 事 业 单 位 改 革 的 五 点 思 考 余 路 [ 摘 要 ] 事 业 单 位 改 革 是 中 国 改 革 的 重 要 环 节, 其 影 响 力 和 难 度 不 亚 于 国 有 企 业 改 革 本 文 着 重 围 绕 推 进 事 业 单 位 改 革 应 考 虑 的 五 个 方 面

日 本 位 于 亚 洲 东 部, 太 平 洋 西 北 角, 是 我 国 东 方 的 一 个 岛 国 在 洪 积 世 ( 注 1) 的 大 部 分 时 期 内, 日 本 与 大 陆 相 连 大 约 在 洪 积 世 晚 期 至 冲 积 世 ( 注 2) 初 期, 日 本 各 地 发 生 海 进, 出 现

2深化教育教学改革、创新人才培养模式

Microsoft Word - 9pinggb_let.doc

实 习 上 下 点 表 格 解 释 和 相 关 纪 律 要 求 : 1 表 格 中 所 有 名 词 都 为 简 称, 包 括 医 院 名 称 四 年 级 五 年 级 各 专 业 名 称 等 所 有 时 间 都 为 学 生 装 好 行 李 出 发 时 间, 请 提 前 0 分 钟 将 行 李 运 到

简报158期.doc

Microsoft Word - 9pingb5_let.doc

退休權益.ppt [相容模式]

Microsoft Word - 1.《國文》試題評析.doc

Ps22Pdf

$%%& ()*+, %&, %-&&%%,. $ %,, $,, & /$- 0(1 $%%& %& 234 %-%, 5&%6&633 & 3%%, 3-%, %643 -%%% :::; 7<9; %-%, 3$%$ :::;

# $# #!# # # # # # # %# # # &# # # # #! "

zt

行 业 市 场 研 究 属 于 企 业 战 略 研 究 范 畴, 作 为 当 前 应 用 最 为 广 泛 的 咨 询 服 务, 其 研 究 报 告 形 式 呈 现, 通 常 包 含 以 下 内 容 : 一 份 专 业 的 行 业 研 究 报 告, 注 重 指 导 企 业 或 投 资 者 了 解 该

行 业 市 场 研 究 属 于 企 业 战 略 研 究 范 畴, 作 为 当 前 应 用 最 为 广 泛 的 咨 询 服 务, 其 研 究 报 告 形 式 呈 现, 通 常 包 含 以 下 内 容 : 一 份 专 业 的 行 业 研 究 报 告, 注 重 指 导 企 业 或 投 资 者 了 解 该

Hive几种数据导入方式

行 业 市 场 研 究 属 于 企 业 战 略 研 究 范 畴, 作 为 当 前 应 用 最 为 广 泛 的 咨 询 服 务, 其 研 究 报 告 形 式 呈 现, 通 常 包 含 以 下 内 容 : 一 份 专 业 的 行 业 研 究 报 告, 注 重 指 导 企 业 或 投 资 者 了 解 该

《C语言程序设计》教材习题参考答案

《C语言程序设计》第2版教材习题参考答案

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

行 业 市 场 研 究 属 于 企 业 战 略 研 究 范 畴, 作 为 当 前 应 用 最 为 广 泛 的 咨 询 服 务, 其 研 究 报 告 形 式 呈 现, 通 常 包 含 以 下 内 容 : 一 份 专 业 的 行 业 研 究 报 告, 注 重 指 导 企 业 或 投 资 者 了 解 该

什么是函数式编程?

Spark 2.0介绍:在Spark SQL中定义查询优化规则

行 业 市 场 研 究 属 于 企 业 战 略 研 究 范 畴, 作 为 当 前 应 用 最 为 广 泛 的 咨 询 服 务, 其 研 究 报 告 形 式 呈 现, 通 常 包 含 以 下 内 容 : 一 份 专 业 的 行 业 研 究 报 告, 注 重 指 导 企 业 或 投 资 者 了 解 该

案例分享产品文档

据传-蚂蚁金服350亿美元开约A股IPO,马云身价又要暴涨

张家口:塞外明珠

PDF 入不思議解脫境界普賢行願品 ... 《大方廣佛華嚴經卷第四十》

Transcription:

Apache Spark 2.4 新增了 24 个内置函数和 5 个高阶函数, 本文将对这 29 个函数的使用进行介绍 关于 Apache Spark 2.4 的新特性, 可以参见 Apache Spark 2.4 正式发布, 重要功能详细介绍 如果想及时了解 Spark Hadoop 或者 Hbase 相关的文章, 欢迎关注微信公共帐号 :iteblog_hadoop 针对数组类型的函数 array_distinct array_distinct(array<t>): array<t&gt : 从给定数组中删除重复值 使用如下 : SELECT array_distinct(array(1, 2, 3, null, 3)); [1,2,3,null] array_intersect array_intersect(array<t>, array<t>): array<t>: 返回给定两个数组元素的交集, 结果已经去重了 使用如下 : 1 / 10

SELECT array_intersect(array(1, 2, 3), array(1, 3, 5)); [1,3] array_union array_union(array<t>, array<t>): array<t>: 返回给定两个数组元素的并集, 结果已经去重了 使用如下 : SELECT array_union(array(1, 2, 3), array(1, 3, 5)); [1,2,3,5] array_except array_except(array<t>, array<t>): array<t>: 返回只在数组 1 而不在数组 2 的元素, 结果已经去重了 使用如下 : SELECT array_except(array(1, 2, 3), array(1, 3, 5)); [2] array_join array_join(array<string>, String[, String]): String: 使用分隔符将数组的元素进行拼接 另外, 我们还可以指定可选的字符来替换 null 值 如果我们没有指定 null 值的替换字符串, 那么结果中将会把 null 值替换掉 SELECT array_join(array('hello', 'world'), ' '); hello world SELECT array_join(array('hello', null,'world'), ' '); hello world SELECT array_join(array('hello', null,'world'), ' ', ','); 2 / 10

hello, world array_max array_max(array<t>): T: 返回数组中的最大值, null 元素将会被忽略 SELECT array_max(array(1, 20, null, 3)); 20 array_min array_min(array<t>): T: 返回数组中的最小值, null 元素将会被忽略 SELECT array_max(array(1, 20, null, 3)); 1 array_position array_position(array<t>, T): Long: 返回元素 T 在数组第一次出现的位置, 从 1 开始算 SELECT array_position(array(3, 2, 1), 1); 3 array_remove array_remove(array<t>, T): array<t>: 从给定数组中删除所有与给定元素相等的元素 SELECT array_remove(array(1, 2, 3, null, 3), 3); [1,2,null] 3 / 10

arrays_overlap arrays_overlap(array<t>, array<t>): array<t>: 如果数组 1 最少包含数组 2 中一个非空的元素, 则返回 true; 如果两个数组没有公共元素, 而且两个数组均为空则返回 false, 如果其中任何一个数组包含 null 元素则返回 null SELECT arrays_overlap(array(1, 2, 3), array(3, 4, 5)); true array_sort array_sort(array<t>): array<t>: 按升序对输入数组进行排序 输入数组的元素必须是可排序的 null 元素将放置在返回数组的末尾 SELECT array_sort(array('b', 'd', null, 'c', 'a')); ["a","b","c","d",null] concat concat(string,...): String / concat(array<t>,...): array<t>: 返回 col1,col2,...,coln 拼接的结果 此函数适用于字符串, 二进制和数组 SELECT concat('spark', 'SQL'); SparkSQL SELECT concat(array(1, 2, 3), array(4, 5), array(6)); [1,2,3,4,5,6] flatten 4 / 10

flatten(array<array<t>>): array<t>: 将数组的数组转换为数组 SELECT flatten(array(array(1, 2), array(3, 4))); [1,2,3,4] array_repeat array_repeat(t, Int): array<t>: 返回包含元素计数次数的数组 SELECT array_repeat('123', 2); ["123","123"] reverse reverse(string): String / reverse(array<t>): array<t>: 将字符串进行反转, 或者将数组的元素顺序进行反转 SELECT reverse('spark SQL'); LQS kraps SELECT reverse(array(2, 1, 4, 3)); [3,4,1,2] sequence sequence(t, T[, T]): array<t>: 生成从 start 到 stop( 包括 ) 的元素数组, 逐步递增 返回元素的类型与参数表达式的类型相同 SELECT sequence(1, 5); [1,2,3,4,5] SELECT sequence(5, 1); 5 / 10

[5,4,3,2,1] SELECT sequence(to_date('2018-01-01'), to_date('2018-03-01'), interval 1 month); ["2018-01-01","2018-02-01","2018-03-01"] shuffle shuffle(array<t>): array<t>: 返回给定数组的随机排列 SELECT shuffle(array(1, 20, 3, 5)); [3,5,1,20] SELECT shuffle(array(1, 20, null, 3)); [null,3,20,1] slice slice(array<t>, Int, Int): array<t>: 从 start 索引位置开始从数组中截取 length 长度的子数组 ; 如果 start 为负数, 则从后面向前截取 SELECT slice(array(1, 2, 3, 4), 2, 2); [2,3] SELECT slice(array(1, 2, 3, 4), -2, 2); [3,4] array_zip array_zip(array<t>, array<u>,...): array<struct<t, U,...>>: 返回一个合并的结构数组, 其中第 N 个结构包含输入数组的所有第 N 个值 6 / 10

SELECT arrays_zip(array(1, 2, 3), array(2, 3, 4)); [{"0":1,"1":2},{"0":2,"1":3},{"0":3,"1":4}] SELECT arrays_zip(array(1, 2), array(2, 3), array(3, 4)); [{"0":1,"1":2,"2":3},{"0":2,"1":3,"2":4}] 针对 map 类型的函数 map_form_arrays map_form_arrays(array<k>, array<v>): map<k, V>: 通过给定的 key value 数组对组合一个 map,key 不能包含 null 值 SELECT map_from_arrays(array(1.0, 3.0), array('2', '4')); {"1.0":"2","3.0":"4"} map_from_entries map_from_entries(array<struct<k, V>>): map<k, V>: 从结构体中返回一个 map SELECT map_from_entries(array(struct(1, 'a'), struct(2, 'b'))); {"1":"a","2":"b"} map_concat map_concat(map<k, V>,...): map<k, V>: 返回多个 map 的并集 SELECT map_concat(map(1, 'a', 2, 'b'), map(2, 'c', 3, 'd')); {"1":"a","2":"c","3":"d"} 7 / 10

针对数组和 map 类型的函数 element_at element_at(array<t>, Int): T / element_at(map<k, V>, K): V: 对于数组, 返回给定索引位置 ( 从 1 开始算 ) 在对应数组里面的值 ; 如果 index < 0, 则从后往前算 ; 如果给定的索引大于数组的长度, 则返回 null 对于 map, 返回给定 key 对应的值 ; 如果 map 中不包含这个 key, 则返回 null SELECT element_at(array(1, 2, 3), 2); 2 SELECT element_at(map(1, 'a', 2, 'b'), 2); b cardinality cardinality(array<t>): Int / cardinality(map<k, V>): Int:size 的别名 返回给定数组或 map 的大小 ; 如果数组或 map 为 null, 则返回 -1 SELECT cardinality(array('b', 'd', 'c', 'a')); 4 高阶函数 transform transform(array<t>, function<t, U>): array<u> 和 transform(array<t> function<t, Int, U>): array<u>: 使用给定函数转换数组中的元素 如果 lambda 函数有两个参数, 则第二个参数代表这个元素的索引 SELECT transform(array(1, 2, 3), x -> x + 1); [2,3,4] SELECT transform(array(1, 2, 3), (x, i) -> x + i); 8 / 10

[1,3,5] filter filter(array<t>, function<t, Boolean>): array<t>: 使用给定的谓词过滤给定数组的元素 SELECT filter(array(1, 2, 3), x -> x % 2 == 1); [1,3] aggregate aggregate(array<t>, A, function<a, T, A>[, function<a, R>]): R: 将二元运算符应用于初始的 state 和数组中的所有元素, 并返回单个值 SELECT aggregate(array(1, 2, 3), 0, (acc, x) -> acc + x); 6 SELECT aggregate(array(1, 2, 3), 0, (acc, x) -> acc + x, acc -> acc * 10); 60 exists exists(array<t>, function<t, Boolean>): Boolean: 判断数组里面是否有元素符合给定谓词 SELECT exists(array(1, 2, 3), x -> x % 2 == 0); true zip_with zip_with(array<t>, array<u>, function<t,u,r>): 9 / 10

Powered by TCPDF (www.tcpdf.org) array<r>: 使用函数将两个给定数组 ( 按元素 ) 合并为单个数组 如果其中一个数组较短, 则在应用函数之前, 在短数组的末尾附加 null 值以匹配较长数组的长度 SELECT zip_with(array(1, 2, 3), array('a', 'b', 'c'), (x, y) -> (y, x)); [{"y":"a","x":1},{"y":"b","x":2},{"y":"c","x":3}] SELECT zip_with(array(1, 2), array(3, 4), (x, y) -> x + y); [4,6] SELECT zip_with(array('a', 'b', 'c'), array('d', 'e', 'f'), (x, y) -> concat(x, y)); ["ad","be","cf"] 本博客文章除特别声明, 全部都是原创! 转载本文请加上 : 转载自过往记忆 (https://www.iteblog.com/) 本文链接 : () 10 / 10