GreenPlum的Java语言扩展实施

1、需求说明

GreenPlum数据库支持PL/Java语言扩展,用户可以通过Java方法编写自定义函数来实现特定功能。

2、环境准备

GreenPlum数据库

用户名密码:root以及gpadmin

3、实施步骤

3.1、下载pl/Java的扩展包

网址:Download VMware Greenplum® — VMware Tanzu Network

注意相应的gp以及Linux版本。

3.2、上传并安装扩展包

#安装扩展包
[gpadmin@mdw ~]$ gppkg -i pljava-2.0.4-gp6-rhel7_x86_64.gppkg
#重启数据库
[gpadmin@mdw ~]$ gpstop -r

3.3、root用户执行命令

#root账号分别执行这两条命令,每台机器都要执行,注意将jdk的版本修改成机器实际的版本。
[gpadmin@mdw ~]$ echo "$JAVA_HOME/jre/lib/amd64/server" > /etc/ld.so.conf.d/libjdk1.8.0_311.conf
​
[gpadmin@mdw ~]$ ldconfig

3.4、对database安装实例

#demo为实际database
[gpadmin@mdw ~]$ psql -d demo -c 'CREATE EXTENSION pljava;'

备注:执行下面这条应该也可以

[gpadmin@mdw ~]$ psql -d demo -f $GPHOME/share/postgresql/pljava/install.sql

3.5、测试使用

3.5.1、项目打包

主要是生成jar包

package com.example.pl;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;

import java.util.Map;

public class ShineUtils {

    public static String replaceAll(String source, String regex) {
        if (source == null || "".equals(source)) {
            return source;
        }
        JSONObject regexJson = JSON.parseObject(regex);
        for (Map.Entry<String, Object> entry : regexJson.entrySet()) {
            source = source.replaceAll(entry.getKey(), (String) entry.getValue());
        }
        return source;
    }

}

3.5.2、包上传并分发到其他节点

# gpscp类似于Linux中scp功能,seg_hosts是集群节点信息
[gpadmin@mdw ~]$ gpscp -f /home/gpadmin/conf/seg_hosts /usr/local/greenplum/greenplum-db-6.21.1/lib/postgresql/java/pldemo-1.0-jar-with-dependencies.jar  =:$GPHOME/lib/postgresql/java/

3.5.3、设置Greenplum pljava_classpath服务器配置参数

[gpadmin@mdw ~]$ gpconfig -c pljava_classpath -v 'pldemo-1.0-jar-with-dependencies.jar'

3.5.4、重新加载配置文件

[gpadmin@mdw ~]$ gpstop -u

3.5.5、进入Greenplum并创建测试表

[gpadmin@mdw ~]$ psql demo
psql (9.4.26)
Type "help" for help.
​
demo=# create table temp (a varchar) distributed randomly; 
demo=# insert into temp values ('my string');
demo=# insert into temp values ('my string');
demo=# insert into temp values ('no string');
demo=# 

3.5.6、创建自定义函数

demo=# 
demo=# CREATE function replaceAll(varchar, varchar) RETURNS varchar as 'com.example.pl.ShineUtils.replaceAll' LANGUAGE java;
CREATE FUNCTION
demo=# 

3.5.7、使用函数

原数据以及使用函数后:

demo=# 
demo=# select a from temp;
     a
-----------
 my string
 my string
 no string
(3 rows)
​
demo=# 
demo=# select replaceAll(a, '{"my":"you"}') from temp;
 replaceall
------------
 you string
 you string
 no string
(3 rows)
​
demo=#

3.5.8、函数删除及修改

函数删除:

demo=#
demo=# Drop function replaceAll(varchar, varchar);
DROP FUNCTION
demo=#

函数修改:

demo=# create or replace function replaceAll(varchar, varchar) RETURNS varchar as 'com.example.pl.ShineUtils.replaceAll' LANGUAGE java;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值