GreenPlum 使用java自定义函数

greenplum 是支持java 开发自定函数的,方法如下,请参考.

1.安装jdk,并配置好环境变量。注:每个节点都需要。

2.安装jdk后,执行如下命令:root用户

# echo "$JAVA_HOME/jre/lib/amd64/server" > 
/etc/ld.so.conf.d/libjdk-1.6.0_21.conf
# /sbin/ldconfig

3.安装PL/Java 支持,到官网下载 :https://network.pivotal.io/products/pivotal-gpdb/#/releases/5226 ,Language Extensions下 找到自己对应系统的文件下载即可

4.下载完成之后,执行如下命令进行安装

gppkg -i pljava-ossv1.4.0_pv1.3_gpdb4.3orca-rhel5-x86_64.gppkg

等待安装完成,完成后重新启动数据库:

$ gpstop -r

5.导入PL/java 脚本

$ psql -d mydb
  -f $GPHOME/share/postgresql/pljava/install.sql
CREATE FUNCTION
CREATE FUNCTION
CREATE LANGUAGE
CREATE LANGUAGE

6.编写java程序

package gpdb.jar.ultrapower.com.cn;

public class HelloWorld {
	public static String sayHello(String name){
		return name + ",Hello!";
	}
	public static String sayHello_1(){
		return "Hello,Hello!";
	}
}

7.将程序打成jar包,并上传至服务器.本次测试使用 SayHello.jar 名

8.将SayHello.jar复至到各集群中节点上,包含主节点。

$ gpscp -f gphosts_file SayHello.jar =:$GPHOME/lib/postgresql/java/

9.配置环境变量,多个jar请用:号分割,这个需要使用 gpstop -u 让其生效.

$ gpconfig -c pljava_classpath -v \'examples.jar:SayHello.jar\' --masteronly
 让配置生效,,这步很重要啊,要不死都不知道怎么死的.
gpstop -u 

10.配置环境变量,使其生效.这个和 9 有啥区别我还不知道.在当前session下生效.

SELECT set_config('pljava_classpath', 'HelloWorld.jar', false);

11.编写greenplum函数 注意一下包名及方法名

create function say_hello(name text)
RETURNS TEXT
as 'gpdb.jar.ultrapower.com.cn.HelloWorld.sayHello'
LANGUAGE java;

 12.使用如下命令进行测试:

mydb=# select say_hello('suncf');
  say_hello   
--------------
 suncf,Hello!
(1 row)

13.完成 

附::类型对照关系

Table 1. PL/Java data type mapping

PostgreSQLJava
boolboolean
charbyte
int2short
int4int
int8long
varcharjava.lang.String
textjava.lang.String
byteabyte[ ]
datejava.sql.Date
timejava.sql.Time (stored value treated as local time)
timetzjava.sql.Time
timestampjava.sql.Timestamp (stored value treated as local time)
timestampzjava.sql.Timestamp
complexjava.sql.ResultSet
setof complexjava.sql.ResultSet

转载于:https://my.oschina.net/suncf/blog/890798

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值