greenplum使用PXF訪問外部資料

2021-08-15 02:03:01 字數 4145 閱讀 2936

greenplum平台擴充套件框架(pxf)通過內建聯結器提供對外部資料的訪問,

這些聯結器可以將外部資料來源對映到greenplum資料庫表,通過外部表的形式查詢外部資料來源。

pxf可支援訪問的外部資料來源有hdfs,hive和hbase。其中可以對hdfs資料進行讀和寫操作。

下面介紹pxf訪問hive資料的方法

一)pxf訪問hive資料

pxf hive聯結器支援多種hive的資料格式,包括textfile,sequencefile,rcfile,orc,parquet.

$ vi /tmp/pxf_hive_datafile.txt

2、將以下資料新增到pxf_hive_datafile.txt; 請注意使用逗號,分隔四個字段值:

prague,jan,101,4875.33

rome,mar,87,1557.39

bangalore,may,317,8936.99

beijing,jul,411,11600.67

san francisco,sept,156,6846.34

paris,nov,159,7134.56

san francisco,jan,113,5397.89

prague,dec,333,9894.77

bangalore,jul,271,8320.55

beijing,dec,100,4248.41

3、在default資料庫中建立乙個命名為sales_info的hive表(這裡的hive表是textfile格式):

hive> create table sales_info (location string, month string,

number_of_orders int, total_sales double)

row format delimited fields terminated by ','

stored as textfile;

4、將pxf_hive_datafile.txt示例資料檔案載入到sales_info表中:

hive> load data local inpath '/tmp/pxf_hive_datafile.txt'

into table sales_info;

5、執行查詢sales_info以驗證您是否成功載入了資料:

hive> select * from sales_info;

6、確定hive表的hdfs位置

hive> describe extended sales_info;

detailed table information

......

7、gp訪問textfile格式的hive表

可以使用hive和hivetext配置檔案訪問以textfile格式儲存的hive**資料。

示例:使用hive配置檔案

gp=# create external table salesinfo_hiveprofile(location text, month text, num_orders int, total_sales float8)

location ('pxf:')

format 'custom' (formatter='pxfwritable_import');

示例:使用hivetext配置檔案

gp=# create external table salesinfo_hivetextprofile(location text, month text, num_orders int, total_sales float8)

location ('pxf:text&delimiter=\x2c')

format 'text' (delimiter=e',');

8、gp訪問rcfile格式的hive表

pxf hiverc配置檔案提供對rcfile資料的訪問

示例:使用hiverc配置檔案查詢hive表中的rcfile格式的資料。

(1)啟動hive命令列並建立乙個以rcfile格式儲存的hive表:

hive> create table sales_info_rcfile (location string, month string,

number_of_orders int, total_sales double)

row format delimited fields terminated by ','

stored as rcfile;

(2)將sales_info表中的資料插入到sales_info_rcfile:

hive> insert into table sales_info_rcfile select * from sales_info;

樣本資料集的副本現在以hive sales_info_rcfile**中的rcfile格式儲存。

(3)查詢sales_info_rcfilehive表以驗證資料是否正確載入:

hive> select * from sales_info_rcfile;

(4)使用pxf hiverc配置檔案建立乙個可讀的greenplum資料庫外部表,引用sales_info_rcfile您在前面的步驟中建立的hive 表。

你必須在location和format子句中指定乙個分隔符。

gp=# create external table salesinfo_hivercprofile(location text, month text, num_orders int, total_sales float8)

location ('pxf:')

format 'text' (delimiter=e',');

(5)查詢外部**:

gp=# select location, total_sales from salesinfo_hivercprofile;

9、gp訪問orc格式的hive表

優化的行列(orc)檔案格式是列式檔案格式,它提供了一種高效的方式來儲存和訪問hdfs資料。

在壓縮和效能方面,orc格式改進了文字和rcfile格式。

pxf支援orc版本1.2.1。

-----gp支援orc檔案格式的配置檔案的一些限制條件------

選擇支援orc的配置檔案時,請考慮以下幾點:

1)hiveorc配置檔案:

一次讀取一行資料。

支援列投影。

支援複雜的型別。您可以訪問由陣列,地圖,結構和聯合資料型別組成的hive表。pxf序列化每個這些複雜的型別text。

2)hivevectorizedorc配置檔案:

一次最多可讀取1024行資料。

不支援列投影。

不支援複雜型別或時間戳資料型別。

注意:hiveorc和hivevectorizedorc配置檔案當前不支援謂詞下推。

(1)示例:使用hiveorc配置檔案查詢hive表中的orc格式的資料

gp外部表如下:

gp=> create external table salesinfo_hiveorcprofile(location text, month text, num_orders int, total_sales float8)

location ('pxf:')

format 'custom' (formatter='pxfwritable_import');

(2)示例:使用hivevectorizedorc配置檔案查詢hive表中的orc格式的資料

gp外部表如下:

gp=> create external table salesinfo_hivevectorc(location text, month text, num_orders int, total_sales float8)

location ('pxf:')

format 'custom' (formatter='pxfwritable_import');

10、gp訪問parquet格式的hive表

定義greenplum資料庫外部**:

gp=# create external table pxf_parquet_table (location text, month text, number_of_orders int, total_sales double precision)

location ('pxf:')

format 'custom' (formatter='pxfwritable_import');

Greenplum的PXF在容器中編譯

pxf適用於聯邦資料的查詢,支援多種資料來源,如hadoop hive 關聯式資料庫。支援多個異構資料來源,並只查詢資料來源中少量資料集,而避免對資料集執行etl操作。1.pxf server 部署在segment host主機上。2.segment通過rest介面和pxf server進行互動。3...

Greenplum 虛擬機器使用指導

greenplum虛擬機器使用指導 5.0版本的greenplum資料庫虛擬機器。這個虛擬機器包含greenplum和配套的greenplum管理中心商業版本的全部功能。2 這份指導提到的資料和執行指令碼在虛擬機器中的 home gpadmin目錄下都能找到。資料是事先預製好的,在虛擬機器第一次啟動...

varnish下使用acl限制ip位址訪問

acl forbidden chinaip.data 192.168.1.0 24 10.0.0.0 24 第2步 在vcl recv中定義策略,放到最前面。if client.ip forbidden 第3步 可選 自定義錯誤頁面 根據不同的錯誤 執行不同的操作 將錯誤 為750的,重定向goog...