【实战】Greenplum平台扩展框架PXF与Hadoop的数据交互

本文转自掌数科技

一、与HADOOP HDFS的交互

01 PXF是什么

PXF是 Greenplum平台扩展框架(PXF),通过内置连接器提供对外部数据的访问。

PXF作为Greenplum与hadoop集群数据交互的并行通道框架,在标准功能外,还支持自定义开发与扩展,在Greenplum中通过PXF可以并行加载及并行卸载Hadoop平台数据。

如下图所示:

通过PXF,可以把Greenplum超强的结构化数据超强的存储和计算能力(一般不大于50PB的数据量)与Hadoop的海量半结构化、非结构化数据存储存储和分析能力结合起来,为企业数字化转型战略提供扎实的数据架构基础,其中Greenplum作为企业核心数据仓库(部分企业也通过Greenplum存储和处理半结构化及非结构化数据,如用户访问日志,文档等),Hadoop主要作为海量半结构化数据和非结构化数据的存储及处理平台,以及结构化历史流水数据的检索(Hbase)。

PXF可支持访问的外部数据源有HDFS,Hive和Hbase,我们接下来将分三篇文章描述PXF如何与这三种数据源进行交互。

下面我们将围绕Greenplum与Hadoop hdfs文件系统的数据交互进行,在Greenplum数据库中通过PXF协议读取hdfs中数据和向hdfs文件系统写入计算查询结果数据。

02 Greenplum PXF实战

1. Greenplum读取Hadoop hdfs文件

步骤1:编写文本文件,并增加数据

步骤2:查看数据

步骤3:在greenplum中创建外部表

drop external table jia;
CREATE EXTERNAL TABLE jia(location text, monthtext, num_orders int, total_sales float8)
           LOCATION ('pxf://gao/test/jia.txt?PROFILE=Hadoop hdfsTextSimple')
         FORMAT 'TEXT' (delimiter=E',');

步骤4:查看表中数据

2. Greenplum写入Hadoop hdfs文件

本章节介绍如何从Greenplum中使用外部表写入Hadoop hdfs文件中。

步骤1:创建可写外部表(不可查询)

drop external table pxf_Hadoop hdfs_writabletbl_1;
CREATE WRITABLE EXTERNAL TABLE pxf_Hadoophdfs_writabletbl_1(location text, month text, num_orders int, total_salesfloat8)
           LOCATION ('pxf://gao/test/gao.txt?PROFILE=Hadoop hdfsTextSimple')
         FORMAT 'TEXT' (delimiter=',');

步骤2:往外部表写入数据

INSERT INTO pxf_Hadoop hdfs_writabletbl_1SELECT * FROM pxf_Hadoop hdfs_textsimple;

步骤3: 查看Hadoop hdfs上的该文本文件

二、与Hive的数据交互

01 Hive是什么

Hive是Hadoop平台离线数据仓库解决方案,基于mapreduce底层逻辑,后期基于spark(mapreduce的改进版,分阶段式的内存式mapreduce),或直接使用sparkSQL,适合处理超大规模离线数据,主要用于批量离线计算与分析,Hive 及spark 对于SQL标准支持都不完善,缺乏很多专用分析函数,窗口函数等高级SQL特性的支持,需要开发人员用java开发语言编写MapReduce函数来实现(UDF:自定义函数),同时,稍微复杂点的查询执行速度都在分钟级以上,大部分复杂查询都是小时级别,不适合业务部门报表、即席查询及BI等交互式分析与统计(业务部门通常要求秒级响应),但企业中,这类业务需求恰恰是业务部门最关注的,因此,金融、电信、能源甚至大部分互联网企业都通过混合架构(MPP+Hadoop),来支持业务部门的即席查询、多维分析及自助式BI服务。

Greenplum是MPP数据库领域的领导者, Pivotal Greenplum(商业版)内置了并行的数据接口PXF,支持与当前所有主流的Hadoop平台进行并行数据流通,通过PXF可以在Greenplum集群中访问Hadoop中Hive数据库中的数据,通过使用PXF,结合Greenplum超强的计算能力,能够快速加载数据到Greenplum,良好的支持业务部门的固定报表,即席查询、交互式数据分析以及数据科学实验等的需求。

下文将通过一系列实战介绍如何通过PXF在Greenplum与Hadoop Hive进行数据交互。02

Greenplum PXF实战

1.创建一个文本文件并写入数据

2. 连接到hive数据库

3. 创建hive数据表

4. 从文件系统上load数据到hive表中

5. hive中查询表数据

hive>SELECT*FROM sales_info;

6. 确定表位置

7. GP集群中创建外部表

8. 查看表

select * from salesinfo_hiveprofile;

三、与Hbase的数据交互

01 Greenplum与Hbase的互通

Hbase是谷歌Bigtable的开源实现,基于Hadoop HDFS分布式文件存储系统,是一个高性能、面向列、可伸缩、实时读写的分布式NOSQL数据库。当前,Hbase在互联网企业中得到了广泛的使用,作为关系型数据库的重要补充,甚至直接用于某些非核心业务系统。其主要适用于海量数据的存储和快速检索(如电商历史交易明细,金融机构的历史交易明细数据),支持在海量数据的情况下秒级响应,但对复杂的查询支持有限,缺乏数据分析相关函数和功能。

Greenplum作为当前市场上最为流行的数据分析平台,提供了一套完整的运行框架PXF,支持无缝的与Hadoop生态圈(如Hive,HBASE等)进行并行数据交互。Greenplum PXF打通了Greenplum与Hadoop之间的数据通道,使得企业数据得到有效的流动和使用,并间接促成了当前企业最为流程的混合数据架构(MPP+Hadoop)。

通过使用PXF,数据仓库或ETL开发人员,无需使用ETL软件,即可直接抽取和整合Hadoop的数据,企业数据分析人员无需了解Hadoop(如Hive,Hbase),即可通过Greenplum对存储在Hbase(Hive等)数据库中的数据进行复杂的分析。

下面我们将通过一些演示介绍如何通过Greenplum PXF,对Hbase数据库数据进行查询和分析。02

PXF实战-与Hbase的数据互通

1. 使用gpadmin用户登录到hbase里

2. 创建一个名为HBase的表order_info的default命名空间。order_info有两个列族:product和shipping_info。

语句:

create 'order_info', 'product','shipping_info'

3. 向order_info表中添加一些数据

put 'order_info', '1', 'product:name','tennis racquet'
put 'order_info', '1', 'product:location','out of stock'
put 'order_info', '1','shipping_info:state', 'CA'
put 'order_info', '1','shipping_info:zipcode', '12345'
put 'order_info', '2', 'product:name','soccer ball'
put 'order_info', '2', 'product:location','on floor'
put 'order_info', '2','shipping_info:state', 'CO'
put 'order_info', '2','shipping_info:zipcode', '56789'
put 'order_info', '3', 'product:name','snorkel set'
put 'order_info', '3', 'product:location','warehouse'
put 'order_info', '3', 'shipping_info:state','OH'
put 'order_info', '3','shipping_info:zipcode', '34567'

4. 显示order_info表内容

5. 进入到gp中,创建外部表

语句:

CREATE EXTERNAL TABLE orderinfo_hbase("product:name" varchar, "shipping_info:zipcode" int)
   LOCATION ('pxf://order_info?PROFILE=HBase')                                    
FORMAT 'CUSTOM'(formatter='pxfwritable_import');

6. 查看该外部表

select * from orderinfo_hbase;

本文分享自微信公众号 – Greenplum中文社区(GreenplumCommunity)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

关注微信公众号

VMware 中国研发中心

Greenplum官方技术交流群

扫码添加小助手即可入群,添加时请备注 “GP网站”