我正在使用 HAWQ 处理基于列的文件。在阅读 Pivotal 文档时,他们建议用户应该使用gpfdist
来读写可读的外部表,以便以并行方式快速处理数据。
我按照文档中的建议制作了一个表格,并通过 SQL 确认了我的数据,如下所示。
CREATE EXTERNAL TABLE ext_data
(col1 text, col2 text,col3 text, col4 text, col5 int, col6 int, col7 int,col8 int)
LOCATION ('gpfdist://hawq2:8085/*.csv')
FORMAT 'CSV'(DELIMITER ',');
SELECT gp_segment_id,count(*) from ext_data GROUP BY gp_segment_id;
数据均匀分布在所有从节点上。
以前我的目标是创建表,从文件中读取数据并确定加载的数据分布良好。它是通过使用 gpfdist 的上述过程实现的。
但问题是外部表和内部表之间的区别。即使两种方法具有相同的功能,使用外部或内部表的原因是什么。
我发现一些用户在使用 HAWQ 或 Greenplume 数据库时遵循以下程序的一些博客。
1. making external table using gpfdist
2. making internal table again
3. reading the data from external data into internal data.
我没有完全理解这种行为。最重要的是,我不知道为什么存在外部和内部表,并且应该使用 Apache Hawq 或 greenplume 数据库来处理数据。