PL/Java的安装及使用

对于Greenplum数据库,PL/Java扩展可作为一个包提供。从Pivotal网络下载软件包,然后使用Greenplum软件包管理器(gppkg)进行安装。

gppkg实用程序会在群集中的所有主机上安装Greenplum数据库扩展以及任何依赖项。在系统扩展和分段恢复的情况下,它也自动在新主机上安装扩展。

1、安装步骤

1.1 下载对应的包:

https://network.pivotal.io/products/pivotal-gpdb/#/releases/242342/file_groups/1255

1.2 上传并安装pljava-1.4.3-gp5-rhel7-x86_64.gppkg

[gpadmin@mdw ~]$ gppkg -i pljava-1.4.3-gp5-rhel7-x86_64.gppkg 
20190429:15:34:28:063590 gppkg:mdw:gpadmin-[INFO]:-Starting gppkg with args: -i pljava-1.4.3-gp5-rhel7-x86_64.gppkg
20190429:15:34:28:063590 gppkg:mdw:gpadmin-[INFO]:-Installing package pljava-1.4.3-gp5-rhel7-x86_64.gppkg
20190429:15:34:28:063590 gppkg:mdw:gpadmin-[INFO]:-Validating rpm installation cmdStr='rpm --test -i /home/greenplum/greenplum-db-5.14/.tmp/pljava-1.4.2-0.x86_64.rpm --dbpath /home/greenplum/greenplum-db-5.14/share/packages/database --prefix /home/greenplum/greenplum-db-5.14'
20190429:15:34:30:063590 gppkg:mdw:gpadmin-[INFO]:-Installing pljava-1.4.3-gp5-rhel7-x86_64.gppkg locally
20190429:15:34:30:063590 gppkg:mdw:gpadmin-[INFO]:-Validating rpm installation cmdStr='rpm --test -i /home/greenplum/greenplum-db-5.14/.tmp/pljava-1.4.2-0.x86_64.rpm --dbpath /home/greenplum/greenplum-db-5.14/share/packages/database --prefix /home/greenplum/greenplum-db-5.14'
20190429:15:34:30:063590 gppkg:mdw:gpadmin-[INFO]:-Installing rpms cmdStr='rpm -i /home/greenplum/greenplum-db-5.14/.tmp/pljava-1.4.2-0.x86_64.rpm --dbpath /home/greenplum/greenplum-db-5.14/share/packages/database --prefix=/home/greenplum/greenplum-db-5.14'
20190429:15:34:30:063590 gppkg:mdw:gpadmin-[INFO]:-Completed local installation of pljava-1.4.3-gp5-rhel7-x86_64.gppkg.
20190429:15:34:30:063590 gppkg:mdw:gpadmin-[INFO]:-Please SET JAVA_HOME firstly.
Please source your $GPHOME/greenplum_path.sh file and restart the database.
You can enable pljava by running psql -d mydatabase -f $GPHOME/share/postgresql/pljava/install.sql.
20190429:15:34:30:063590 gppkg:mdw:gpadmin-[INFO]:-pljava-1.4.3-gp5-rhel7-x86_64.gppkg successfully installed.


重启数据库
[gpadmin@mdw ~]$ gpstop -r

1.3 对database安装实例

[gpadmin@mdw ~]$ psql -d dbName -f $GPHOME/share/postgresql/pljava/install.sql
psql:/home/greenplum/greenplum-db/./share/postgresql/pljava/install.sql:1: ERROR:  Cannot load libjvm.so library, check that it is available in LD_LIBRARY_PATH (Backend.c:243)
DETAIL:  libjvm.so: cannot open shared object file: No such file or directory
psql:/home/greenplum/greenplum-db/./share/postgresql/pljava/install.sql:2: ERROR:  Cannot load libjvm.so library, check that it is available in LD_LIBRARY_PATH (Backend.c:243)
DETAIL:  libjvm.so: cannot open shared object file: No such file or directory
psql:/home/greenplum/greenplum-db/./share/postgresql/pljava/install.sql:3: ERROR:  function java_call_handler() does not exist
psql:/home/greenplum/greenplum-db/./share/postgresql/pljava/install.sql:4: ERROR:  function javau_call_handler() does not exist

报错 解决思路,没有libjvm.so包,将java的server下的包加载到环境变量中(root权限,三个节点都需配置)
[root@mdw ~]# echo "$JAVA_HOME/jre/lib/amd64/server" > /etc/ld.so.conf.d/libjdk-1.8.0_191.conf
[root@mdw ~]# ldconfig 

重新加载实例
[gpadmin@mdw ~]$ psql -d tutengfei -f $GPHOME/share/postgresql/pljava/install.sql
CREATE FUNCTION
CREATE FUNCTION
CREATE LANGUAGE
CREATE LANGUAGE

至此,PG/Java安装完成

2、简单使用

2.1 将java程序进行打包,并上传至服务器,通过主节点分发至各个节点。

[gpadmin@mdw ~]$ cat seg_host 
mdw
sdw1
sdw2
[gpadmin@mdw ~]$ gpscp -f seg_host GeoHash.jar =:$GPHOME/lib/postgresql/java/

2.2 设置pljava_classpath 服务器配置参数在postgresql.conf文件中

[gpadmin@mdw ~]$ gpconfig -c pljava_classpath -v \'examples.jar:GeoHash.jar\'
20190429:16:57:16:073358 gpconfig:mdw:gpadmin-[INFO]:-completed successfully with parameters '-c pljava_classpath -v 'examples.jar:GeoHash.jar''

2.3 重新加载postgresql.conf文件

[gpadmin@mdw ~]$ gpstop -u
20190429:16:58:09:073492 gpstop:mdw:gpadmin-[INFO]:-Starting gpstop with args: -u
20190429:16:58:09:073492 gpstop:mdw:gpadmin-[INFO]:-Gathering information and validating the environment...
20190429:16:58:09:073492 gpstop:mdw:gpadmin-[INFO]:-Obtaining Greenplum Master catalog information
20190429:16:58:09:073492 gpstop:mdw:gpadmin-[INFO]:-Obtaining Segment details from master...
20190429:16:58:09:073492 gpstop:mdw:gpadmin-[INFO]:-Greenplum Version: 'postgres (Greenplum Database) 5.14.0 build commit:13927a46a9b39527fc1af2cbb1571d4fd394ff88'
20190429:16:58:09:073492 gpstop:mdw:gpadmin-[INFO]:-Signalling all postmaster processes to reload
. 


配置环境变量,在当前schema生效:
SELECT set_config('pljava_classpath', 'GeoHash.jar', false);

2.4 编写greenplum的function

CREATE or REPLACE FUNCTION GeoHash(lat FLOAT,lng FLOAT)
RETURNS VARCHAR 
as 'maputil.GeoHashDemo.GeoHashBase'                      //方法的类路径
LANGUAGE java;

2.5 调用function

SELECT GeoHash(40.222012, 116.248283)

 

你可能感兴趣的:(greenplum)