odps编写UDF的实现
问题
尝试写一个UDF,参数支持输入x,y与一个Polygon,返回结果是(x,y)是否在输入的Geometry之内?
环境
- eclipse
- odps 插件
- jts包:jts-1.8.jar
解法
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import com.aliyun.odps.udf.UDF;
import com.vividsolutions.jts.geom.*;
import com.vividsolutions.jts.io.ParseException;
import com.vividsolutions.jts.io.WKTReader; /**
*
* @author xingxing.dxx
*
*/
public class WithinUDF extends UDF { private GeometryFactory geometryFactory = new GeometryFactory(); /*private Logger LOGGER = LoggerFactory.getLogger(WithinUDF.class);*/ /**
* 判断以x,y为坐标的点point(x,y)是否在geometry表示的Polygon中
* @param x
* @param y
* @param geometry wkt格式
* @return
*/
public Boolean evaluate(Double x, Double y, String geometry){ Coordinate coord = new Coordinate(x, y);
Point point = geometryFactory.createPoint(coord); WKTReader reader = new WKTReader(geometryFactory);
try {
Polygon polygon = (Polygon) reader.read(geometry);
return point.within(polygon);
} catch (ParseException e) {
/*LOGGER.error("geometry 格式错误",e);*/
throw new RuntimeException(e.getMessage());
}
} }
测试步骤
- 新建表
odpscmd
create table dual(x double,y double,geometry string);
2. 准备数据(dual.txt),内容如下:
5;5;POLYGON((0 0, 10 0, 10 10, 0 10,0 0))
3. 上传
tunnel u -fd ';' dual.txt project名称.dual; //列之间按照";"分割
4. 运行
true
可以看到结果为true,执行成功
odps编写UDF的实现的更多相关文章
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十五)Spark编写UDF、UDAF、Agg函数
Spark Sql提供了丰富的内置函数让开发者来使用,但实际开发业务场景可能很复杂,内置函数不能够满足业务需求,因此spark sql提供了可扩展的内置函数. UDF:是普通函数,输入一个或多个参数, ...
- pyspark 编写 UDF函数
pyspark 编写 UDF函数 前言 以前用的是Scala,最近有个东西要用Python,就查了一下如何编写pyspark的UDF. pyspark udf 也是先定义一个函数,例如: def ge ...
- spark编写UDF和UDAF
UDF: 一.编写udf类,在其中定义udf函数 package spark._sql.UDF import org.apache.spark.sql.functions._ /** * AUTHOR ...
- 【ODPS】UDF基础
UDF全称User Defined Function,即用户自己定义函数.ODPS提供了非常多内建函数来满足用户的计算需求,同一时候用户还能够通过创建自己定义函数来满足 不同的计算需求. UDF ...
- hive java编写udf函数
(一)创建JAVA 代码--例子 package hiveOpt; import org.apache.hadoop.hive.ql.exec.UDF;import org.apache.hadoop ...
- IDEA 的maven项目打jar 编写UDF 在hive端运行 (全过程,有录制的操作视频)
一. 前提准备 服务端hive搭建完成,可以正常创建访问表 本地端使用的IDE是Intellij IDEA(我的是2017版本,老版本需要支持创建maven项目) ,并且电脑有网. 二. ...
- 使用redis做为MySQL的缓存-C语言编写UDF
介绍 在实际项目中,MySQL数据库服务器有时会位于另外一台主机,需要通过网络来访问数据库:即使应用程序与MySQL数据库在同一个主机中,访问MySQL也涉及到磁盘IO操作(MySQL也有一些数据预读 ...
- 用Visual Studio编写UDF的一点小技巧(二)
- 用Visual Studio编写UDF的一点小技巧(自动补全宏函数、变量)
下载Visual Studio,安装VS 下载番茄助手(Visual Assist X),链接:www.wholetomato.com,然后安装番茄助手 打开VS
随机推荐
- 包子凑数(dp思想)
问题描述: 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子.每种蒸笼都有非常多笼,可以认为是无限笼.每当有顾客想买X个包子,卖包子的大叔就会迅速选 ...
- IIS服务器环境下某路径下所有PHP接口无法运行报500.19错误
IIS服务器环境下某路径(文件夹)下所有PHP接口无法运行报500.19错误 环境:IIS8.5 + php7.2.1 错误描述:某目录下(如 d:\web\A)所有php接口文档运行错误,接口测试工 ...
- springboot(十)-监控应用
微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用进行交互,前后台的业务流会经过很多个微服务的处理和传递,出现了异常如何快速定位是哪个环节出现了问题? ...
- 分分钟钟学会Python - 数据类型(list、tuple)
第四节 数据类型(列表.元祖) 今日内容 列表 元祖 1.列表 1.格式 users = ["ji",1,3,"gyhj"] 2.公共方法 1.len #计算长 ...
- URL中参数为数组
今天写代码时候碰到了一个需要在URL中传递数组类型的参数,记录一下. var urlstr = "http://test"; var test = new Array(); for ...
- 那些H5用到的技术(1)——素材加载
编码环境前言什么时候用到素材加载?loading提示,让用户等待图片的加载音频的加载利用神器PreloadJS总结 编码环境 Sublime Text 3 插件包括: Autoprefixer 自动补 ...
- AngularJs学习笔记--Managing Service Dependencies
原版地址:http://docs.angularjs.org/guide/dev_guide.services.managing_dependencies angular允许service将其他ser ...
- Mac OS terminal终端常用命令
基础概念 OS X 采用的Unix文件系统,所有文件都挂在跟目录“ /” 下面,所以不在要有Windows 下的盘符概念.比如什么“C:”你在桌面上看到的硬盘都挂在 /Volumes 下.比如接上个叫 ...
- 【javascript】jq之display:none与visible:hidden
今天学习到jquery的hide()部分时,突然有一个想法,jquery中的隐藏/显示部分的实现是给目标元素附加一个"display: none"属性,那么如果在类似于下面的布局中 ...
- 在打印窗口,打印视图View的子视图结构图
在打印窗口,打印视图View的子视图结构图,使用 po [self.view recursiveDescription];