WarehousePG에서 PXF를 통해 Impala 테이블을 외부 테이블로 연동하는 설정 가이드입니다.
씨플랫폼에서 테스트 및 작성.
/home/gpadmin/pxf-base
[gpadmin@whpg-m lib]$ pwd
/home/gpadmin/pxf-base/lib
[gpadmin@whpg-m lib]$ ls
ImpalaJDBC41.jar[gpadmin@whpg-m impala]$ pwd
/home/gpadmin/pxf-base/servers/impala
[gpadmin@whpg-m impala]$ cat jdbc-site.xml<configuration>
<property>
<name>jdbc.driver</name>
<value>com.cloudera.impala.jdbc.Driver</value>
</property>
<property>
<name>jdbc.url</name>
<value>jdbc:impala://10.1.10.134:21050/impala_db</value>
</property>
<property>
<name>jdbc.user</name>
<value>cloudera</value>
</property>
<property>
<name>jdbc.password</name>
<value>cloudera</value>
</property>
</configuration>CREATE TABLE kudu_table (
id INT,
name STRING,
age INT
);
INSERT INTO kudu_table VALUES (1, '홍길동', 300);
INSERT INTO kudu_table VALUES (2, 'King', 1);
INSERT INTO kudu_table VALUES (3, '金文受', 88);
INSERT INTO kudu_table VALUES (1, '홍길동', 300);
INSERT INTO kudu_table VALUES (2, 'King', 1);
INSERT INTO kudu_table VALUES (3, '金文受', 88);
INSERT INTO kudu_table VALUES (1, '홍길동', 300);
INSERT INTO kudu_table VALUES (2, 'King', 1);
INSERT INTO kudu_table VALUES (3, '金文受', 88);
CREATE EXTERNAL TABLE sample_parquet_table
STORED AS PARQUET
LOCATION '/user/cloudera/parquet/'
AS SELECT * FROM kudu_table;CREATE EXTERNAL TABLE pxf_parquet_table_jdbc (
id TEXT,
name TEXT,
age INT
)
LOCATION ('pxf://impala_db.sample_parquet_table?profile=jdbc&server=impala')
FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');CREATE FOREIGN TABLE public.pxf_parquet_table_jdbc (
id text NULL,
"name" text NULL,
age int4 NULL
)
SERVER gp_exttable_server
OPTIONS (
formatter 'pxfwritable_import',
format 'custom',
location_uris 'pxf://impala_db.sample_parquet_table?profile=jdbc&server=impala',
execute_on 'ALL_SEGMENTS',
log_errors 'disable',
encoding 'UTF8',
is_writable 'false'
);[gpadmin@whpg-m impala]$ whpg -c "select * from pxf_parquet_table_jdbc;" id | name | age
----+------+-----
3 | 金 | 88
1 | 홍 | 300
2 | King | 1
1 | 홍 | 300
3 | 金 | 88
2 | King | 1
3 | 金 | 88
1 | 홍 | 300
2 | King | 1
(9 rows)
CREATE TABLE sample_parquet_table_whpg
AS (SELECT * FROM public.pxf_parquet_table_jdbc);[gpadmin@whpg-m impala]$ whpg -c "select * from pxf_parquet_table_jdbc" id | name | age
----+------+-----
1 | 홍 | 300
3 | 金 | 88
2 | King | 1
3 | 金 | 88
1 | 홍 | 300
2 | King | 1
3 | 金 | 88
1 | 홍 | 300
2 | King | 1
(9 rows)