上云无忧 > 文档中心 > 百度智能云数据工厂Pingo使用教程 - UDF管理
数据工厂Pingo
百度智能云数据工厂Pingo使用教程 - UDF管理

文档简介:
概述: 在Pingo中,永久性UDF不使用SQL语句创建,而是使用文件系统来管理。此管理方式,相比于使用SQL的方式由如下几个显著的优点: UDF的文件与元数据统一存储,不会出现已经在元数据系统中注册了UDF,但错误删除了对应资源的情况。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

概述

在Pingo中,永久性UDF不使用SQL语句创建,而是使用文件系统来管理。此管理方式,相比于使用SQL的方式由如下几个显著的优点:

  1. UDF的文件与元数据统一存储,不会出现已经在元数据系统中注册了UDF,但错误删除了对应资源的情况。
  2. 拥有版本管理功能,同一个名字的函数可以存在多个版本,方便更新与回滚。
  3. 拥有测试版本概念,可以先小范围使用一个函数的新版本,待稳定后再更新为正式版。

使用方法

总体来讲,Pingo的UDF管理功能使用起来分为以下几个步骤:

  1. 生成符合Pingo UDF规范的jar包。
  2. 将jar包上传到Pingo的文件系统的指定路径,并使用指定的名称。
  3. 在Spark中使用。

UDF打包规范

UDF开发依然遵循Hive,Spark的UDF开发方法。当打包时,需将此UDF对应的类名写入到jar包的Manifest当中。写入规范如下:

section 意义 可选
PINGO udf-class-name udf class name udf的类名,对应create function时的class name 必选的
PINGO udf-flag NORMAL or TEST UDF版本 可选的,不指定时,默认为为NORMAL

例子

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: vinson
Created-By: Apache Maven 3.5.0
Build-Jdk: 1.8.0_45
Name: PINGO
udf-class-name: com.baidu.pingo.udfdemo.UdfDemo

推荐的实现方法

<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-jar-plugin</artifactId> <configuration> <archive>
 <manifestSections> <manifestSection> <name>PINGO</name> <manifestEntries> 
<udf-class-name>YOUR_UDF_CLASS_NAME</udf-class-name> <udf-flag>YOUR_UDF_FLAG</
udf-flag> </manifestEntries> </manifestSection> </manifestSections> </archive> 
</configuration> </plugin> </plugins> </build>

UDF上传路径与名称规范

打包好的UDF必须以一定的规范命名,并上传到指定的文件系统路径才可生效。

文件命名规范

UDF文件名被'.'分割为4个部分,所有部分都区分大小写。

UDF.FUNC_NAME.VERSION.jar
部分 意义 规范
1 UDF文件标识符 必须写为大写的 UDF
2 UDF的名字 符合正则表达[\w_]+,即只包含数字字母和下划线
3 UDF的版本 int范围内的正数
4 文件后缀 必须写为小写的 jar

路径规范

SYSTEM_UDF_PATH/NS_NAME/UDF_FILE
部分 意义 规范
1 Pingo指定的放置UDF的根路径 Pingo指定。现在设置为文件系统的/lib
2 UDF所属的命名空间 符合正则表达[\w_]+,即只包含数字字母和下划线
3 UDF 文件 符合上一小节文件命名规范

上传方法

  • Web上传

进入数据管理-文件管理菜单下的/lib路径,点击上传按钮,将符合命名规范的UDF文件包进行上传。

spark中的使用方法

调用UDF时,需要使用全名,即:

NS_NAME.UDF_NAME[.VERSION]

例子

select test.udfdemo(name) from test_table; --注意下面的例子,
由于Spark的语法分析会将"DIGIT"优先分析为小数,所以当使用指定版本的UDF时,
需要在版本号上使用反引号 select test.udfdemo.`2`(name) from test_table;

权限控制

通过控制文件的读权限,控制UDF的使用权限。文件权限更多内容请参考文件管理-文件权限管理。

相似文档
  • 概述: 数据交换和数据联合查询是大数据分析中比较常见的使用场景,跨产品、跨部门、跨公司的数据联合查询可以弥补彼此数据使用的缺少。但是联合查询也引来一个很关键的问题:数据安全问题。以往的数据安全是通过账号控制(包括权限账号和权限授权等),但这都存在安全泄露的风险,且权限一旦授予后,用户就可以直接获得明文数据,能够对数据做任意拷贝。
  • 传输管理: 传输管理主要解决什么问题? 传输支持哪些数据源? 支持从数据库到数据库之间的同步吗? 传输定期调度需要哪些前提条件?支持以哪种字段来做增量?
  • Q:传输管理主要解决什么问题? A:传输管理目前主要解决的是将用户数据库中的数据传输到Pingo的问题。 Q:传输支持哪些数据源? A:目前支持百度云RDS(MySQL、SQL Server、PostgrelSQL)的数据源,后续将陆续支持其它存储系统的数据源。
  • Q:什么情况下可以自动生成时间切片? A:表已经设置了切片周期,且除对应切片周期的partition字段外,没有其他的partition字段。
  • Q:文件管理如何新建文件夹? A:进入文件管理页面,点击“新建文件夹”按钮,可以创建文件夹,进行文件管理;如果是挂载的时候需要新建文件夹,可以在挂载文件的时候,在 “挂载点”一栏填写“/myfoldername”,则可以在根目录下创建一个由自己管理的“myfoldername”的挂载文件夹。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部