greenplum external table

简介: greenplum 外部表 第一次听到外部表,后来查了一下,oracle也有外部表(孤陋寡闻) greenplum 外部表:一张表的数据指向数据库之外的数据文件 外部表需要指定gpfdist的ip和端口,还有详细的目录地址,其中文件名支持通配符。
greenplum 外部表

第一次听到外部表,后来查了一下,oracle也有外部表(孤陋寡闻)

greenplum 外部表:一张表的数据指向数据库之外的数据文件
外部表需要指定gpfdist的ip和端口,还有详细的目录地址,其中文件名支持通配符。可以编写多个gpfdist的地址,但是不能超过总的segment数


tutorial=> \h create external
Command:     CREATE EXTERNAL TABLE
Description: define a new external table
Syntax:
CREATE [READABLE] EXTERNAL TABLE table_name
     ( column_name data_type [, ...] | LIKE other_table )
      LOCATION ('file://seghost[:port]/path/file' [, ...])
        | ('gpfdist://filehost[:port]/file_pattern[#transform]'
        | ('gpfdists://filehost[:port]/file_pattern[#transform]'
            [, ...])
        | ('gphdfs://hdfs_host[:port]/path/file')
      FORMAT 'TEXT'
            [( [HEADER]
               [DELIMITER [AS] 'delimiter' | 'OFF']
               [NULL [AS] 'null string']
               [ESCAPE [AS] 'escape' | 'OFF']
               [NEWLINE [ AS ] 'LF' | 'CR' | 'CRLF']
               [FILL MISSING FIELDS] )]
           | 'CSV'
            [( [HEADER]
               [QUOTE [AS] 'quote']
               [DELIMITER [AS] 'delimiter']
               [NULL [AS] 'null string']
               [FORCE NOT NULL column [, ...]]
               [ESCAPE [AS] 'escape']
               [NEWLINE [ AS ] 'LF' | 'CR' | 'CRLF']
               [FILL MISSING FIELDS] )]
           | 'CUSTOM' (Formatter=<formatter specifications>)
     [ ENCODING 'encoding' ]
     [ [LOG ERRORS INTO error_table] SEGMENT REJECT LIMIT count
       [ROWS | PERCENT] ]
CREATE [READABLE] EXTERNAL WEB TABLE table_name
     ( column_name data_type [, ...] | LIKE other_table )
      LOCATION ('http://webhost[:port]/path/file' [, ...])
    | EXECUTE 'command' [ON ALL
                          | MASTER
                          | number_of_segments
                          | HOST ['segment_hostname']
                          | SEGMENT segment_id ]
      FORMAT 'TEXT'
            [( [HEADER]
               [DELIMITER [AS] 'delimiter' | 'OFF']
               [NULL [AS] 'null string']
               [ESCAPE [AS] 'escape' | 'OFF']
               [NEWLINE [ AS ] 'LF' | 'CR' | 'CRLF']
               [FILL MISSING FIELDS] )]
           | 'CSV'
            [( [HEADER]
               [QUOTE [AS] 'quote']
               [DELIMITER [AS] 'delimiter']
               [NULL [AS] 'null string']
               [FORCE NOT NULL column [, ...]]
               [ESCAPE [AS] 'escape']
               [NEWLINE [ AS ] 'LF' | 'CR' | 'CRLF']
               [FILL MISSING FIELDS] )]
           | 'CUSTOM' (Formatter=<formatter specifications>)
     [ ENCODING 'encoding' ]
     [ [LOG ERRORS INTO error_table] SEGMENT REJECT LIMIT count
       [ROWS | PERCENT] ]
CREATE WRITABLE EXTERNAL TABLE table_name
    ( column_name data_type [, ...] | LIKE other_table )
     LOCATION('gpfdist://outputhost[:port]/filename[#transform]'
      | ('gpfdists://outputhost[:port]/file_pattern[#transform]'
          [, ...])
      | ('gphdfs://hdfs_host[:port]/path')
      FORMAT 'TEXT'
               [( [DELIMITER [AS] 'delimiter']
               [NULL [AS] 'null string']
               [ESCAPE [AS] 'escape' | 'OFF'] )]
          | 'CSV'
               [([QUOTE [AS] 'quote']
               [DELIMITER [AS] 'delimiter']
               [NULL [AS] 'null string']
               [FORCE QUOTE column [, ...]] ]
               [ESCAPE [AS] 'escape'] )]
           | 'CUSTOM' (Formatter=<formatter specifications>)
    [ ENCODING 'write_encoding' ]
    [ DISTRIBUTED BY (column, [ ... ] ) | DISTRIBUTED RANDOMLY ]
CREATE WRITABLE EXTERNAL WEB TABLE table_name
    ( column_name data_type [, ...] | LIKE other_table )
    EXECUTE 'command' [ON ALL]
    FORMAT 'TEXT'
               [( [DELIMITER [AS] 'delimiter']
               [NULL [AS] 'null string']
               [ESCAPE [AS] 'escape' | 'OFF'] )]
          | 'CSV'
               [([QUOTE [AS] 'quote']
               [DELIMITER [AS] 'delimiter']
               [NULL [AS] 'null string']
               [FORCE QUOTE column [, ...]] ]
               [ESCAPE [AS] 'escape'] )]
           | 'CUSTOM' (Formatter=<formatter specifications>)
    [ ENCODING 'write_encoding' ]
    [ DISTRIBUTED BY (column, [ ... ] ) | DISTRIBUTED RANDOMLY ]

tutorial=>


创建外部表流程

1.文件服务器中启动gpfdist服务

[gpadmin@master admin]$ nohup /usr/local/greenplum-db/bin/gpfdist -d /home/admin/ -p 8888> /tmp/gpfdist.log  &
[1] 9928
[gpadmin@master admin]$ cat /tmp/gpfdist.log
Serving HTTP on port 8888, directory /home/admin/


文件服务器路径已经要准确,否则,之前创建的外部表就会出错


2.创建语句

CREATE EXTERNAL TABLE public.test001_ext
(
 id int,
name varchar(100)
)
LOCATION (
    'gpfdist://192.168.1.80:8888/gpextdata/d.txt'
)
FORMAT 'text' (delimiter ',' null '' escape 'OFF')
ENCODING 'GB18030'; 



tutorial=> CREATE EXTERNAL TABLE public.test001_ext                                               
(  id int, name varchar(100)  )
LOCATION (  'gpfdist://192.168.1.80:8888/gpextdata/d.txt'  )  
 FORMAT 'text' (delimiter ',' null '' escape 'OFF') 
 ENCODING 'GB18030';
CREATE EXTERNAL TABLE
tutorial=> select * from test001_ext;
ERROR:  http response code 404 from gpfdist (gpfdist://192.168.1.80:8888/gpextdata/d.txt): HTTP/1.0404 file not found (url.c:326)  (seg0 slice1 slave1:40000 pid=1847) (cdbdisp.c:1477)

文件路径有问题

tutorial=> CREATE EXTERNAL TABLE public.test001_ext                                               
(                                                                                                   id int,                                                                                           name varchar(100)                                                                                  )                                                                                                  LOCATION (                                                                                             'gpfdist://192.168.1.80:8888/gpextdata/d.txt'                                                            )                                                                                                  FORMAT 'text' (delimiter ',' null '' escape 'OFF')                                                 ENCODING 'GB18030';CREATE EXTERNAL TABLE
tutorial=> select * from test001_ext;
id | name
----+------
  1 | 2
  3 | 4
(2 rows)



CREATE EXTERNAL TABLE public.test001_ext
(
 id int,
name varchar(100)
)
LOCATION (
    'gpfdist://192.168.1.80:8888/gpextdata/d.txt'
)
FORMAT 'text' (delimiter ',' null '' escape 'OFF')
ENCODING 'GB18030';

tutorial=> select * from test001_ext;
id | name
----+------
  1 | 2
  3 | 4
(2 rows)


可以编写多个gpfdist的地址,但是不能超过总的segment数
tutorial=> CREATE EXTERNAL TABLE public.test002_ext
tutorial-> ( id int ,name varchar(100))
tutorial-> LOCATION (
tutorial(>     'gpfdist://192.168.1.80:8888/gpextdata/d.txt',
tutorial(> 'gpfdist://192.168.1.80:8888/gpextdata/b.txt',
tutorial(> 'gpfdist://192.168.1.80:8888/gpextdata/c.txt')
tutorial-> FORMAT 'text' (delimiter ',' null '' escape 'OFF')
tutorial-> ENCODING 'GB18030';
CREATE EXTERNAL TABLE
tutorial=> select * from test002_ext;
ERROR:  There are more external files (URLs) than primary segments that can read them. Found 3 URLs
and 2 primary segments
目录
相关文章
|
人工智能 移动开发 小程序
【Java】医院智能导诊小程序源码,springboot框架
【Java】医院智能导诊小程序源码,springboot框架
308 0
|
Java Spring 数据格式
使用Feign实现Form表单提交
原文:http://www.itmuch.com/spring-cloud-sum/feign-form-params/ 之前,笔者写了《使用Spring Cloud Feign上传文件》。
4465 0
|
9月前
|
数据采集 缓存 NoSQL
布隆过滤器原理和使用场景
布隆过滤器(Bloom Filter)是一种高效的空间节省型数据结构,用于判断元素是否存在于集合中。它通过多个哈希函数将元素映射到位数组,查询时检查对应位是否全为1。优点是空间效率高,缺点是有一定误判率。典型应用场景包括缓存穿透防护、垃圾邮件过滤、黑名单管理及去重等。Java实现中使用BitSet和自定义哈希函数,而Guava和Redis也提供了布隆过滤器的实现。
417 1
|
前端开发 JavaScript 开发者
Web组件:一种新的前端开发范式
【10月更文挑战第9天】Web组件:一种新的前端开发范式
411 2
|
数据采集 算法 数据挖掘
10余位大佬+10余年经验的结晶:Python数据分析与挖掘实战
LinkedIn 对全球超过3.3亿用户的工作经历和技能进行分析后得出,目前最炙手可热的25 项技能中,数据挖掘排名第一。那么数据挖掘是什么? 数据挖掘是从大量数据(包括文本)中挖掘出隐含的、先前未知的、对决策有潜在价值的关系、模式和趋势,并用这些知识和规则建立用于决策支持的模型,提供预测性决策支持的方法、工具和过程。数据挖掘有助于企业发现业务的趋势,揭示已知的事实,预测未知的结果,因此“数据挖掘”已成为企业保持竞争力的必要方法。 今天给小伙伴们分享的Python数据分析与数据挖掘手册是10余位数据挖掘领域资深专家和科研人员,10余年大数据挖掘咨询与实施经验结晶。从数据挖掘的应用出发,以电力、
325 13
|
前端开发
类抖音logo的光影之旅:CSS动画效果,让标志更具吸引力!
类抖音logo的光影之旅:CSS动画效果,让标志更具吸引力!
MAC下快速打开指定目录
MAC下快速打开指定目录
1205 0
|
API Python Windows
将Py转为exe文件
今天我要给大家介绍一种非常方便的方法,可以将Python文件打包成可执行的exe文件。你不用担心用户是否安装了Python环境,只需要一个点击,你的程序就能在任何Windows电脑上运行了!,当然在进行文件打包时,我们总会遇到很多问题,例如某模块未打包进入文件,导致exe文件无法使用,接下来,我会一点一点进行解决.此工具我会出一个专栏,这是工具1.0版本的,只能打包,只包含基础库的py文件,后续会一步步优化,包含自定义打包文件的小图标,文件名,将音乐或其他第三方库模块进行打包。注意,最终为一个GUI工具
将Py转为exe文件
|
存储 程序员 API
python web开发示例详解
python web开发示例详解
199 0
|
数据采集 关系型数据库 MySQL
dts同步问题之同步冲突
dts同步问题之同步冲突
369 5