AnalyticDB PostgreSQL版支持在Hadoop集群上读写数据。本文主要介绍在AnalyticDB PostgreSQL版中使用gphdfs协议向HDFS读写数据的步骤。

说明 如需使用该功能,请 提交工单联系技术支持开通。

创建HDFS测试文件

登录到HDFS,创建相应测试目录和文件,操作示例如下:

root@namenode:/# hadoop fs -mkdir /test #在根目录下创建一个test文件夹
root@namenode:/# echo "1 abc" > data.txt #创建一个测试数据文件
root@namenode:/# hadoop fs -put local.txt /test #上传测试数据文件到hdfs中
root@namenode:/# hadoop fs -cat /test/data.txt #查看文件内容
1 abc

创建HDFS读外表并查询数据

在外表创建语句中,指定HDFS集群的地址(使用gphdfs外表访问协议),以及关联的文件路径,文件格式和分隔符。更多关于创建外表的信息,请参见CREATE EXTERNAL TABLE

CREATE READABLE EXTERNAL TABLE test (id int, name text)
LOCATION ('gphdfs://namenode_IP:port/test/data.txt')
FORMAT 'text' (delimiter ' ');

从外部表中读取数据:

SELECT * FROM test;

查询结果如下:

 id | name
----+------
  1 | abc
(1 row)

创建HDFS写外表并写入数据

在创建外部表的语句中,声明WRITABLE,表示可写外部表:

CREATE WRITABLE EXTERNAL TABLE test_write (id int, name text)
LOCATION('gphdfs://namenode_IP:port/test/data.txt')
FORMAT 'text' (delimiter ' ');

使用INSERT语句写入数据:

INSERT INTO test_write VALUES(2, 'def');

在HDFS集群上查看文件,确认数据已正确写入:

root@namenode:/# hadoop fs -cat /test/data.txt #查看文件内容
1 abc
2 def