udf

Flink UDF

此生再无相见时 提交于 2020-11-08 13:28:44
本文会主要讲三种udf: ScalarFunction TableFunction AggregateFunction 用户自定义函数是非常重要的一个特征,因为他极大地扩展了查询的表达能力。本文除了介绍这三种udf之外,最后会介绍一个redis作为交互数据源的udf案例。 注册用户自定义函数 在大多数场景下,用户自定义函数在使用之前是必须要注册的。对于Scala的Table API,udf是不需要注册的。 调用TableEnvironment的registerFunction()方法来实现注册。Udf注册成功之后,会被插入TableEnvironment的function catalog,这样table API和sql就能解析他了。 1.Scalar Functions 标量函数 标量函数,是指返回一个值的函数。标量函数是实现将0,1,或者多个标量值转化为一个新值。 实现一个标量函数需要继承ScalarFunction,并且实现一个或者多个evaluation方法。标量函数的行为就是通过evaluation方法来实现的。evaluation方法必须定义为public,命名为eval。evaluation方法的输入参数类型和返回值类型决定着标量函数的输入参数类型和返回值类型。evaluation方法也可以被重载实现多个eval。同时evaluation方法支持变参数,例如:eval

Flink从入门到真香(6、Flink实现UDF函数-实现更细粒度的控制流)

守給你的承諾、 提交于 2020-11-08 12:54:47
Flink提供了各种数据的转换操作,但实际业务过程中有很多业务上需要处理的数据结构、规则等等,需要自己写自己的业务代码,这时候就用到的flink提供的函数类(Function Class) Flink暴露了所有udf函数的接口(实现方式为接口或者抽象类),例如MapFunction,FilterFunction,ProcessFunction等。 一个小栗子,要筛选数据中以sensor3为开头的数据 还是在com.mafei.apitest新建一个scala Object UDFTest1 其他代码跟之前一样,读取文件做些简单处理,这里增加了一个自定义的函数类MyFilterFunction,在使用时,只需要在逻辑处增加.filter方法即可, package com.mafei.apitest import org.apache.flink.api.common.functions.{FilterFunction, ReduceFunction, RichFilterFunction} import org.apache.flink.streaming.api.scala.{StreamExecutionEnvironment, createTypeInformation} //获取传感器数据 case class SensorReadingTest1(id: String

Spark优化之小文件是否需要合并?

微笑、不失礼 提交于 2020-10-09 06:07:10
我们知道,大部分Spark计算都是在内存中完成的,所以Spark的瓶颈一般来自于集群(standalone, yarn, mesos, k8s)的资源紧张,CPU,网络带宽,内存。Spark的性能,想要它快,就得充分利用好系统资源,尤其是内存和CPU。有时候我们也需要做一些优化调整来减少内存占用,例如将小文件进行合并的操作。 一、问题现象 我们有一个15万条总数据量133MB的表,使用SELECT * FROM bi.dwd_tbl_conf_info全表查询耗时3min,另外一个500万条总数据量6.3G的表ods_tbl_conf_detail,查询耗时23秒。两张表均为列式存储的表。 大表查询快,而小表反而查询慢了,为什么会产生如此奇怪的现象呢? 二、问题探询 数据量6.3G的表查询耗时23秒,反而数据量133MB的小表查询耗时3min,这非常奇怪。我们收集了对应的建表语句,发现两者没有太大的差异,大部分为String,两表的列数也相差不大。 CREATE TABLE IF NOT EXISTS `bi`.`dwd_tbl_conf_info` ( `corp_id` STRING COMMENT '', `dept_uuid` STRING COMMENT '', `user_id` STRING COMMENT '', `user_name` STRING COMMENT

2.3 sqlmap目录及结构

孤人 提交于 2020-10-03 20:47:42
2.3 sqlmap目录及结构 Tips:此篇文章主要参考了《sqlmap从入门到精通》这本书中的相关具体细节,由于这本书作者完成的时间大概在2017年作用,所以我根据书中提到的信息再根据目前最新版的sqlmap目录结构进行了优化。 2.3.1 sqlmap文件目录及主文件 1.sqlmap目录结构 2.sqlmap主文件解读 (1) .gitattributes git的属性文件,例如:是什么编程语言,具体的文件类型等等 (2) .gitignore git需要忽略的文件,一般按照理解,把一些没有必要传上去的文件排除在外,不用上传至git仓库中 (3) .travis.yml 标记Python版本和设置sqlmap的脚本 (4) .pylintrc Python代码分析工具,用于分析Python代码中的错误和不符合代码风格标准的问题代码 (5) LICENSE 授权许可文件 (6) COMMITMENT 相关承诺 GPL Cooperation Commitment (7) README.md 相关的说明文件,简单的指导怎么使用安装sqlmap,还针对各种语言版本进行介绍 (8) sqlmap.conf sqlmap调用的配置文件,比如一些默认的参数,或者是想要提前配置一些默认的参数进行批量自动化扫描探测 (9) sqlmap.py sqlmap的主程序

沃尔玛的产品知识图谱

我的梦境 提交于 2020-08-19 04:21:06
作者|Karthik Deivasigamani 编译|VK 来源|Medium 介绍 电子商务目录是通过从卖家、供应商/品牌获取数据而创建的。合作伙伴(销售商、供应商、品牌)提供的数据往往不完整,有时会遗漏我们客户正在寻找的关键信息。尽管合作伙伴遵循一个规范(一种发送产品数据的约定格式),但在标题、描述和图像中隐藏着大量数据。除了我们的合作伙伴提供的数据外,互联网上还有许多非结构化数据,如产品手册、产品评论、博客、社交媒体网站等。 沃尔玛正致力于构建一个零售图谱(Retail Graph),捕捉有关产品及其相关实体的知识,以帮助我们的客户更好地发现产品。它是一个产品知识图谱,可以在零售环境中回答有关产品和相关知识的问题,可用于语义搜索、推荐系统等。本文进一步阐述了什么是零售图谱、如何构建零售图谱、围绕图模型的技术选择、数据库和一些用例。 沃尔玛的零售图谱是什么 零售图谱捕获了零售世界中存在的产品和实体之间的连接。实体是存在的物体、事物、概念或抽象,例如客厅、野生动物摄影、颜色、农舍风格。我们关注的实体大致有两种:抽象的和具体的。前者帮助我们回答诸如“夏日游泳池派对用品”、“农家客厅家具”、“野生动物摄影镜头”之类的问题,而后者帮助我们回答诸如“蓝色牛仔裤裤子”、“木制餐桌”之类的问题。该图谱还将产品之间的关系捕获到两个类别,替代品和补充品(附件、兼容产品等)。它还试图将抽象概念

SQL/PromQL? SLS时序分析选型

老子叫甜甜 提交于 2020-08-17 16:50:08
可观察性与Open Telemetry 在CNCF的 landscape 上,有专门的一个部分来展示Obserability and Analysis,什么是Observability(可观察性)? 我从OpenTelementry官网摘抄了这段描述: 可观察性包括Logging,Metrics,Tracing这三类紧密配合的数据源:metrics可以用来发现问题,利用相关的trace去找到异常节点,再看该异常节点的日志去定位根因。 很多人可能会觉得可观察性就是“旧瓶装新酒”,本质上没有任何的创新。从现实中(包括Landscape)不难理解这个说法,目前Logging,Metrics(Monitoring),Tracing都有各自的生态。实现上大家有各自的数据模型,模型中可能有也可能没有考虑和其他数据的联动,如果想要对数据做整合,就要各自做大量的适配工作。 为了解决这个问题,OpenTelementry诞生了。OpenTelementry从OpenTracing和OpenCensus合并而来,致力于可观察性的统一,他的重点在规范的制定,sdk的实现,采集系统的实现上,让大家都以一致的数据模型来产出数据. 对于数据如何存储如何使用,这个范畴太大,有非常多可能性,所以仍然需要上层产品去探索。 SLS 对Open Telemetry支撑

[源码解析] GroupReduce,GroupCombine 和 Flink SQL group by

本小妞迷上赌 提交于 2020-08-17 08:55:10
[源码解析] GroupReduce,GroupCombine和Flink SQL group by 目录 [源码解析] GroupReduce,GroupCombine和Flink SQL group by 0x00 摘要 0x01 缘由 0x02 概念 2.1 GroupReduce 2.2 GroupCombine 2.3 例子 0x03 代码 0x04 Flink SQL内部翻译 0x05 JobGraph 0x06 Runtime 6.1 ChainedFlatMapDriver 6.2 GroupReduceCombineDriver 6.3 GroupReduceDriver & ChainedFlatMapDriver 0x07 总结 0x08 参考 0x00 摘要 本文从源码和实例入手,为大家解析 Flink 中 GroupReduce 和 GroupCombine 的用途。也涉及到了 Flink SQL group by 的内部实现。 0x01 缘由 在前文 [源码解析] Flink的Groupby和reduce究竟做了什么 中,我们剖析了Group和reduce都做了些什么,也对combine有了一些了解。但是总感觉意犹未尽,因为在Flink还提出了若干新算子,比如GroupReduce和GroupCombine。这几个算子不搞定,总觉得如鲠在喉

mysql常见问题解决

五迷三道 提交于 2020-08-17 03:32:09
日常使用mysql数据库遇到的一些问题,做下记录,会持续更新。 一、MySql Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 解决方法 环境: linux,mysql5.6 错误: Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 原因:   同一个ip在短时间内产生太多(超过mysql数据库max_connect_errors的最大值)中断的数据库连接而导致的阻塞;默认max_connect_errors是10 解决方法: 1、提高允许的max_connection_errors数量(治标不治本):   ① 进入Mysql数据库查看max_connect_errors: show variables like '%max_connection_errors%';   ② 修改max_connection_errors的数量为1000: set global max_connect_errors = 1000;   ③ 查看是否修改成功: show variables like '%max_connection_errors%

把当前ubuntu系统做成镜像

风流意气都作罢 提交于 2020-08-16 12:19:12
Systemback是一个很好的备份还原软件。用它还可以生成自己的linux系统镜像文件,所以我们这里使用Systemback来制作UBuntu的镜像文件。 1 安装Systemback 在开始之前我们先update以下自己的ubuntu,确保没啥问题: sudo apt-get update 接下来安装Systemback: sudo add-apt-repository ppa:nemh/systemback sudo apt-get update && sudo apt-get install systemback unionfs-fuse 安装完成后在Dash菜单中就能找到这个软件了。 2 使用Systemback生成镜像文件 输入管理员密码,打开后界面如下图所示: 下面介绍一下自定义系统的iso文件如何制作。 第一步:这里我们选择"创建Live系统",出现界面如下图所示: 第二步:勾选左侧的include the user data files(包含用户数据文件),这样自己主文件夹内的文件都会被包含在系统镜像中。 很多相关的程序的配置文件都是保存在主文件夹内的。Working Directory是设置工作目录,程序运行时产生的临时文件都会被保存在这里。所以一定要保证这里有足够的存储空间。 第三步:点击"创建新的"就开始创建了,等待创建完成,这个过程有点长

Spark3.0分布,Structured Streaming UI登场

自作多情 提交于 2020-08-15 10:50:05
近日,在Spark开源十周年之际,Spark3.0发布了,这个版本大家也是期盼已久。登录Spark官网,最新的版本已经是3.0。而且不出意外,对于Structured Streaming进行了再一次的加强,这样Spark和Flink在实时计算领域的竞争,恐怕会愈演愈烈。 Spark 3.0 主要的新特性如下: 相比于Spark2.4,性能提升了2倍,主要体现在自适应查询执行,动态分区修剪等方面。 Pandas API改动,包括Python类型的提示和UDF函数。 对于PySpark的异常处理进行了增强。 新的Structured Streaming UI页面。 而且解决了大量Jira问题。 Structured Streaming最初于Spark 2.0引入,并且停止了SparkStreaming的更新,很明显Structured Streaming的出现是为了在实时计算领域可以与对水印,窗口等支持更好的Flink一战。 3.0版本添加Structured Streaming的专用UI,可以方便的查看流作业的执行信息。 虽然与Flink比起来,Structured Streaming还有很长的路要走,但是可以期待Spark 3.0版本对于Structured Streaming的持续加强。 更多实时数据分析相关博文与科技资讯,欢迎关注 “实时流式计算” 来源: oschina 链接