HDB—PXF使用手册之访问HDFS(三)

本文详细介绍了如何使用PXF插件在Greenplum数据库中访问HDFS文件数据,包括PXF的安装、配置,以及如何配置Java类路径和JVM选项。特别讨论了访问HDFS文件的HdfsTextSimple、HdfsTextMulti和Avro Profile,并提供了多个示例展示如何创建外部表查询HDFS数据。

PXF插件

PXF要求您在主机上运行TomcatTomcat保留端口800580808009。请确保其他服务使用的端口不是8005。防止在启动 PXF 服务时发生端口冲突。

1.1 目录结构

目录

描述

/usr/lib/pxf

PXF目录

/etc/pxf/conf

PXF配置目录。此目录包含pxf-public.classpathpxf-private.classpath配置文件

/var/pxf/pxf-service

PXF服务实例所在目录

/var/log/pxf

此目录包括pxf-service.log和所有与 Tomca相关的日志, 包括catalina.out。日志由拥有用户:组pxf:pxf。其他用户是读取权限。

/var/run/pxf/catalina.pid

PXF Tomcat容器 PID文件,存储进程号

1.2 手动安装

如果使用Ambari安装和管理HAWQ群集, 则不需要遵循以下手动安装步骤。

(1)安装PXF软件,包括PXF 服务、所有PXF插件、HDFSHBaseHiveJDBCJSON

$ sudo yum install -y pxf

以这种方式安装 PXF:

安装所需版本的apache-tomcat

创建一个/etc/pxf/pxf-n.n.n目录,添加软链接/etc/pxf到此目录

◎设置PXF服务配置文件/etc/pxf

创建一个/usr/lib/pxf-n.n.n目录,添加软链接/usr/lib/pxf到此目录

复制 PXF 服务JAR文件pxf-service-n.n.n.jar/usr/lib/pxf-n.n.n/

将每个PXF插件的JAR文件复制到/usr/lib/pxf-n.n.n/

/usr/lib/pxf-n.n.n中创建相关软链接pxf-xxx.jar

(2)初始化PXF服务

$ sudo service pxf-service init

(3)启动PXF服务

$ sudo service pxf-service start

额外的pxf-service命令选项包括stoprestartstatus

(4)如果选择使用 HBase 插件, 请执行以下配置:

a. PXF HBase插件JAR文件添加到HBase CLASSPATH通过更新HBASE_CLASSPATH,HBase 配置文件中的环境变量设置/etc/hbase/conf/hbase-env.sh:

export HBASE_CLASSPATH=${HBASE_CLASSPATH}:/usr/lib/pxf/pxf-hbase.jar

b.更新HBase配置后, 重启HBase服务。

HBase主节点上:

su -l hbase -c "/usr/hdp/current/hbase-master/bin/hbase-daemon.sh restart master; sleep 25"

c.HBase Region Server节点上:

$ su -l hbase -c "/usr/hdp/current/hbase-regionserver/bin/hbase-daemon.sh restart regionserver"

配置PXF

PXF配置文件进行任何更改后 (pxf-profiles.xml添加自定义配置文件), 将更改分发到安装了PXF的所有节点, 然后重启所有节点上的PXF服务。

2.1 设置Java类路径

PXF服务的类路径是在插件安装过程中设置的。管理员只应在添加新的PXF连接器时对其进行修改。类路径定义在两个文件中:

1. /etc/pxf/conf/pxf-private.classpath–包含运行 PXF 服务所需的所有资源, 包括 pxf-hdfspxf-hbase pxf-hive插件。此文件不能编辑或删除。

2. /etc/pxf/conf/pxf-public.classpath–应在此处添加插件jar文件和自定义插件和自定义配置文件的任何从属 jar文件。类路径资源应该每行定义一个。通配符可以在资源的名称中使用, 但不能用于完整路径。

更改类路径文件后,必须重新启动PXF服务。

2.2 PXF服务设置JVM命令行选项

/var/pxf/pxf-service/bin/setenv.sh文件中,每个PXF服务实例都可以添加或修改PXF服务的JVM命令行选项:

目前,JVM_OPTS参数设置为最大Java heap sizethread stack size的以下值:

JVM_OPTS="-Xmx512M -Xss256K"

添加或修改JVM命令行选项后, 必须重启PXF服务。

访问HDFS文件数据

3.1 HDFS文件格式

PXF HDFS 插件支持读取以下文件格式:

1Text File—逗号分隔值 (. csv) 或带分隔符的格式纯文本文件

2)Avro—JSON 定义的基于schema的数据序列化格式

PXF HDFS插件包括以下profiles以支持上面列出的格式:

1HdfsTextSimple—单行文本文件

2HdfsTextMulti—带有嵌入式换行的多行文本文件

3Avro—Avro文件

如果发现预定义的PXF HDFS profile不满足您的需要, 则可以选择从现有HDFS序列化和反序列化类创建自定义HDFS profile。

3.2 查询外部HDFS数据

PXF HDFS插件支持HdfsTextSimple, HdfsTextMultiAvro profiles.

使用以下语法创建表示HDFS数据的HAWQ外部表:

CREATE EXTERNAL TABLE <table_name> 

    ( <column_name> <data_type> [, ...] | LIKE <other_table> )LOCATION ('pxf://<host>[:<port>]/<path-to-hdfs-file>

    ?PROFILE=HdfsTextSimple|HdfsTextMulti|Avro[&<custom-option>=<value>[...]]')FORMAT '[TEXT|CSV|CUSTOM]' (<formatting-properties>);

下表描述创建外部表使用指定HDFS插件的关键字和值。

关键字

<host>

PXF主机。虽然<host>可以识别任何PXF代理节点, 但请使用HDFS NameNode, 因为它在运行的HDFS 群集中是可用的。如果启用了HDFS高可用性HA, <host> 必须标识为HDFS NameService

<port>

PXF端口。如果省略<port>, PXF假设<host>标识为高可用性的HDFS Nameservice 并连接到由pxf_service_port服务器配置参数值。默认值为51200

<path-to-hdfs-file>

HDFS 文件路径。

PROFILE

PROFILE关键字必须指定为HdfsTextSimpleHdfsTextMultiAvro其中的一个值

<custom-option>

与特定PROFILE对应的定制选项。

FORMAT ’TEXT’

< path-to-hdfs-file >引用纯文本分隔文件,使用'TEXT' FORMAT带HdfsTextSimple profile。

FORMAT 'CSV’

<path-to-hdfs-file>引用逗号分隔值的文件,使用'CSV' FORMATHdfsTextSimpleHdfsTextMulti profiles。

FORMAT 'CUSTOM’

Avro文件使用该关键字。Avro 'CUSTOM'格式只支持内建的(formatter='pxfwritable_import')格式属性。

<formatting-properties>

与特定PROFILE对应的格式属性。

注意: 创建PXF外部表时,在FORMAT规范中不能使用HEADER选项。

3.3 示例

3.3.1 使用HdfsTextSimple Profile

当读取纯文本分隔或. csv 文件时, 每个行都是单个记录时使用HdfsTextSimple。支持的<formatting-properties>delimiter,用来指定文件中每条记录的字段分隔符。

执行以下步骤创建示例数据文件, 将文件复制到HDFS, 并使用HdfsTextSimple profile创建PXF外部表以查询数据:

1.  PXF 示例数据文件创建一个 HDFS 目录:

$ su - hdfs

$ hdfs dfs -mkdir -p /data/pxf_examples

$ hdfs dfs -chown -R gpadmin:gpadmin /data/pxf_examples

2. 创建一个带分隔符的纯文本数据文件, 名为pxf_hdfs_simple.txt:

$ echo 'Prague,Jan,101,4875.33

Rome,Mar,87,1557.39

Bangalore,May,317,8936.99

Beijing,Jul,411,11600.67' > /tmp/pxf_hdfs_simple.txt

注意使用逗号,以分隔四个数据字段。

3. 将文件上传HDFS:

$ hdfs dfs -put /tmp/pxf_hdfs_simple.txt /data/pxf_examples/

4. 显示存储在HDFSpxf_hdfs_simple.txt文件的内容:

$ hdfs dfs -cat /data/pxf_examples/pxf_hdfs_simple.txt

5. 使用该HdfsTextSimple profile创建pxf_hdfs_simple.txt文件查询数据的HAWQ外部表。

$ exit

$ su - gpadmin

$ psql -d postgres

 

gpadmin=# CREATE EXTERNAL TABLE pxf_hdfs_textsimple(location text, month text, num_orders int, total_sales float8) LOCATION ('pxf://namenode:51200/data/pxf_examples/pxf_hdfs_simple.txt?PROFILE=HdfsTextSimple') FORMAT 'TEXT' (delimiter=E',');

gpadmin=# SELECT * FROM pxf_hdfs_textsimple;

 

   location    | month | num_orders | total_sales

---------------+-------+------------+-------------

 Prague        | Jan   |        101 |     4875.33

 Rome          | Mar   |         87 |     1557.39

 Bangalore     | May   |        317 |     8936.99

 Beijing       | Jul   |        411 |    11600.67

(4 rows)

6. 创建第二个外部表pxf_hdfs_simple.txt, 这一次使用CSV FORMAT:

gpadmin=# CREATE EXTERNAL TABLE pxf_hdfs_textsimple_csv(location text, month text, num_orders int, total_sales float8) LOCATION ('pxf://namenode:51200/data/pxf_examples/pxf_hdfs_simple.txt?PROFILE=HdfsTextSimple') FORMAT 'CSV';

gpadmin=# SELECT * FROM pxf_hdfs_textsimple_csv;

当指定FORMAT 'CSV'时,因为逗号是默认分隔符, 可以不需要delimiter说明。

3.3.2 使用HdfsTextMulti Profile

读取纯文本文件时带分隔符的单行或多行记录 (包括嵌入 (带引号) 换行符) ,请使用HdfsTextMulti进行特殊处理。简单说就是数据中含有换行符时使用HdfsTextMulti

执行以下步骤以创建示例数据文件, 将文件复制到HDFS, 并使用HdfsTextMulti profile创建 PXF 外部表以查询数据:

1. 创建带分隔符的纯文本文件:

$ vi /tmp/pxf_hdfs_multi.txt

2. 将以下数据复制/粘贴到pxf_hdfs_multi.txt:

"4627 Star Rd.

San Francisco, CA  94107":Sept:2017

"113 Moon St.

San Diego, CA  92093":Jan:2018

"51 Belt Ct.

Denver, CO  90123":Dec:2016

"93114 Radial Rd.

Chicago, IL  60605":Jul:2017

"7301 Brookview Ave.

Columbus, OH  43213":Dec:2018

使用冒号:作为分隔符来分隔三个字段。还请注意第一个 (地址) 字段引号,而且第一个字段中含有换行符

3. 将文件上传到HDFS:

$ su - hdfs

$ hdfs dfs -put /tmp/pxf_hdfs_multi.txt /data/pxf_examples/

4. 使用HdfsTextMulti profile创建pxf_hdfs_multi.txt文件查询数据的外部表。指定冒号:作为字段分隔符

gpadmin=# CREATE EXTERNAL TABLE pxf_hdfs_textmulti(address text, month text, year int) LOCATION ('pxf://namenode:51200/data/pxf_examples/pxf_hdfs_multi.txt?PROFILE=HdfsTextMulti') FORMAT 'CSV' (delimiter=E':');

5. 查询该pxf_hdfs_textmulti:

gpadmin=# SELECT * FROM pxf_hdfs_textmulti;

 

         address          | month | year

--------------------------+-------+------

 4627 Star Rd.            | Sept  | 2017

 San Francisco, CA  94107           

 113 Moon St.             | Jan   | 2018

 San Diego, CA  92093               

 51 Belt Ct.              | Dec   | 2016

 Denver, CO  90123                  

 93114 Radial Rd.         | Jul   | 2017

 Chicago, IL  60605                 

 7301 Brookview Ave.      | Dec   | 2018

 Columbus, OH  43213                

(5 rows)

3.3.3 Avro Profile

Apache Avro是一个数据序列化框架, 数据以紧凑的二进制格式序列化。

Avro指定在JSON中定义数据类型。Avro格式文件具有独立的架构, 也在JSON中定义。Avro模式及其数据都是完全自我描述的。

具体可参考链接:

https://hdb.docs.pivotal.io/230/hawq/pxf/HDFSFileDataPXF.html

3.3.4 启用HA模式下访问HDFS数据

要访问高可用性HDFS群集中的外部HDFS数据, 请更改CREATE EXTERNAL TABLE LOCATION子句使用<HA-nameservice>而不是<host>[:<port>]

gpadmin=# CREATE EXTERNAL TABLE <table_name> ( <column_name> <data_type> [, ...] | LIKE <other_table> ) LOCATION ('pxf://<HA-nameservice>/<path-to-hdfs-file>?PROFILE=HdfsTextSimple|HdfsTextMulti|Avro[&<custom-option>=<value>[...]]') FORMAT '[TEXT|CSV|CUSTOM]' (<formatting-properties>);

当高可用的HDFS群集还原为单个NameNode配置时, 则相反。在这种情况下, 任何指定<HA-nameservice> 的表定义都应使用 <host>[:<port>]语法。

富士_温度调节器PXF系列样本pdf,富士_温度调节器PXF系列样本介绍如下: 1、特 点 1)鲜明显示、美观、文字较大的彩色LCD显示(白色PV显示) 2).50ms高速采样 · 100ms的高速控制运算 3).可对应所有输入 4).为了对应装置小型化,提供了超小型尺寸(面板内纵深58mm) 便于维护 5).开关控制、加热冷却控制及2自由度PID控制、开环控制等,可对应所有温度控 制。 6).多样化功能(协调运行、转送输出、电量监控、显示运行天数等)。 2、可以对应多种场合的高水平控制 1).开关控制 测量值(PV)低于设定值(SV)时, 输出为 ON状态, 加热器通电。 高于设定值时, 输出为OFF状态, 并切断加热器。 因此, 设定值在ON、 OFF状态重复切换, 保持恒温的控制方式被称为开关动作双位置控制。 2).PID 控制 (带自整定功能) 传统的普通PID控制。 外部干扰响应响应导致超调产生。 3).模糊控制 (带自整定功能) 通过模拟运算来抑制超调, 改善外部干扰响应的功能。 模拟 控制器监视测量值, 在保持上升时间不变的同时, 可以抑制 超调。 另外, 也可以加快干扰响应的收敛速度。 4).2 自由度 PID 控制 (带自整定功能) 能够抑制上升时或变更设定值时的超调、 负超调的同时, 实 现控制外部干扰响应。 5).开环控制 (PID2 控制) 控制过程中, 控制对象机器的电源在ON→OFF→ON过程中 也抑制超调。 6).自我整定功能 用于电源启动、 设定值变更、 控制发生混乱时, 自动计算 PID的同时进行控制的功能。 7).斜坡保温功能 (简易程序控制) 预先设定SV及SV的变化时间, 并自动运行的功能。 如果需要了解更多,请点击http://fushi.gongboshi.com
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值