hdfs外部表导出数据
本页目录
hdfs外部表导出数据#
本节通过一个简单的例子来说明如何使用hdfs外部表来导出数据。关于NULL值处理,分割符,换行符,转义字符以及编码的处理可以参考CREATE EXTERNAL TABLE的详细语法。
准备导出的表
定义外部表
导出数据
准备导出的表#
假设我们有一个内部表expenses如下:
CREATE TABLE myexpenses(name text, date date, amount float4, category text, desc1 text);
INSERT INTO myexpenses VALUES('john','2017-01-20',100.00,'travel','nothing'),('tom','2016-12-01',300,'taxi','nothing');
INSERT INTO myexpenses VALUES('marry','2017-01-21',1000.00,'travel','nothing'),('kurt','2016-12-02',800,'taxi','nothing');
etl=# select * from myexpenses;
name | date | amount | category | desc1
-------+------------+--------+----------+---------
john | 2017-01-20 | 100 | travel | nothing
tom | 2016-12-01 | 300 | taxi | nothing
marry | 2017-01-21 | 1000 | travel | nothing
kurt | 2016-12-02 | 800 | taxi | nothing
(4 rows)
定义(可写)外部表#
可以使用下面的命令创建WRITABLE外部表,指定的location中如果路径名不存在,OushuDB 会自动为客户创建该目录。其中’nnhost’和’nnport’代表使用的Hadoop HDFS的namenode 主机地址和端口号:
CREATE WRITABLE EXTERNAL TABLE expense_out (LIKE myexpenses)
LOCATION ('hdfs://nnhost:nnport/expense')
FORMAT 'csv' ( DELIMITER '|' NULL ' ');
ORC外表#
CREATE WRITABLE EXTERNAL TABLE expense_out (LIKE myexpenses)
LOCATION ('hdfs://nnhost:nnport/expense')
FORMAT 'orc' options ("orc.write.format" '0.11', "orc.compress" 'lz4');
orc可写外表参数配置参考 orc-core-config 以及 hive-orc-config
导出数据#
下面这条语句可以很简单的导出数据到expense_out外部表。
INSERT INTO expense_out select * from myexpenses;
现在你可以查看/expense目录下已经产生了相应文件。