人大金仓分析型数据库外部表(一)

news/2024/7/5 12:41:04

目录

定义外部表

file://协议

gpfdist://协议

gpfdists:// 协议

s3:// 协议 


        外部表是数据库可以支持存储在数据库之外的数据的表。 您可以创建一个可读的外部表来从外部数据源读取数据,也可以创建一个可写的外部表以将数据写入外部数据源。 您可以像在常规数据库表中一样在SQL命令中使用外部表。例如,您可以使用SELECT(可读外部表),INSERT(可写外部表)以及将外部表与其他表连接。 外部表通常用于加载和卸载数据库数据。

定义外部表

        要创建一个外部表定义,用户需要指定输入文件的格式以及外部数据源的位置。 使用下列协议之一来访问外部表数据源。用户不能在CREATE EXTERNAL TABLE语句中混用协议:

  • file:// 访问 Segment 主机上 数据超级用户能访问的外部数据文件
  • gpfdist:// 指向一个位于文件主机上的目录并且向 数据库所有的实例并行提供外部数据文件
  • gpfdists:// 是 gpfdist的一个安全版本
  • s3://访问 Amazon S3中的文件
  • pxf://协议使用 平台扩展框架( PXF )访问外部 HDFS 文件和 HBase和Hive表

        外部表从数据库内访问外部文件,就好像它们是常规的数据库表一样。用gpfdist/gpfdists, pxf, s3协议定义的外部表通过使用所有数据库的实例资源装载或卸载数据来利用数据库的并行机制。 pxf协议利用Hadoop分布式文件系统的并行体系结构来访问该系统上的文件。 s3协议利用了Amazon Web服务(AWS)的功能。用户可以使用SELECTJOINSORT EXTERNAL TABLE DATASQL命令直接并行地查询外部表数据, 并且用户可以为外部表创建视图。

file://协议

        file://协议被用在一个指定操作系统文件的URI中。该URI包括主机名、端口和该文件的路径。每个文件都必须位于一个实例主机上由超级用户可访问的位置。该URI中使用的主机名必须匹配gp_segment_configuration系统目录表中注册的一个实例主机名。如例子中所示,LOCATION子句可以有多个URI:

CREATE EXTERNAL TABLE ext_expenses (
name text, date date, amount float4, category text, desc1 text )
LOCATION ('file://host1:5432/data/expense/*.csv',
'file://host2:5432/data/expense/*.csv',
'file://host3:5432/data/expense/*.csv')
FORMAT 'CSV' (HEADER);

         用户在LOCATION子句中指定的URI的数量就是将并行工作访问外部表的实例的数量。 对于每一个URI,数据库为该文件指派一个指定主机上的主实例。 为了装载数据时的最大并行化,可将数据与主实例数量相同的大小均等的文件。 这会保证所有的实例都参与到装载中。每个实例主机上的外部文件不能超过该主机上主实例的数量。基于file://协议的表只能是可读表。 系统视图pg_max_external_files显示每个外部表允许多少个外部表文件。 这个视图列出了使用file://协议协议时每个实例主机上可用的文件槽。 该视图只适用于file://协议。 例如:

SELECT * FROM pg_max_external_files;

gpfdist://协议

        gpfdist工具从一个文件主机上的目录中把外部数据文件并行提供给数据库的所有实例。在外部数据文件所在的主机上运行gpfdistgpfdist 会自动解压 gzip (.gz) bzip2 (.bz2)。用户可以使用通配符(*)或者其他C风格的模式匹配来表示要读取的多个文件。指定的文件都被假定是相对于启动 gpfdist实例时指定的目录。所有的主实例并行地访问外部文件,实例的数量服是gp_external_max_segments服务器配置参数中设置的数量。 在CREATE EXTERNAL TABLE语句中使用多个gpfdist数据源可以提高外部表的扫描性能。

gpfdists:// 协议

        gpfdists:// 协议是gpfdist:// 协议的一个安全版本。要使用它,用户需要以--ssl选项运行gpfdist工具。 当在一个URI中指定gpfdists://协议时,它启用文件服务器和数据库的加密通信以及安全鉴定以保护其不受窃听和中间人等攻击。服务器配置参数verify_gpfdists_cert 控制数据库与gpfdist实用程序通信以从外部数据源读取数据或将数据写入外部数据源时是否启用SSL证书认证。 在测试数据库外部表与提供外部数据的gpfdist实用程序之间的通信时, 可以将参数值设置为false,以禁用身份验证。 如果值为false,这些SSL异常将被忽略:

  • gpfdist使用的自签名SSL证书不被数据库信任
  • SSL证书中包含的主机名与运行 gpfdist的主机名不匹配

s3:// 协议 

        用户可以定义只读外部表使用S3桶中现有的数据文件作为表数据,或者创建可写外部表将来自于INSERT操作的数据存储到S3桶中的文件。数据库使用协议URL中指定的S3 URL以及前缀来为一个只读表选择一个或更多文件,还可以在为 INSERT操作上传S3文件到可写表中时定义文件位置和文件名格式。对于s3协议,用户需要在CREATE EXTERNAL TABLE命令的LOCATION子句中指定文件的位置以及一个可选的配置文件位置。下面是语法:

's3://S3_endpoint[:port]/bucket_name/[S3_prefix] [region=S3_region] [config=config_file_location
        对于可写的S3表, s3 协议的 URL 指定 数据库为该表上传数据文件的端点。对于上传文件的S3 用户 ID ,该 S3 桶的权限必须是 Upload/Delete 。对于每一个由于向表中插入数据形成的新的上传文件,都会使用这个S3文件前缀。

http://lihuaxi.xjx100.cn/news/1577220.html

相关文章

【目标检测】——Gold-YOLO为啥能超过YOLOV8

华为 https://arxiv.org/pdf/2309.11331.pdf 文章的出发点:FPN中的信息传输问题 1. 简介 基于全局信息融合的概念,提出了一种新的收集和分发机制(GD),用于在YOLO中进行有效的信息交换。通过全局融合多层特征并将全局信…

【VUE复习·3】@keyup.xxx 键盘事件触发函数(单按键 or 组合按键触发)

总览 1.keyup.xxx or keydown.xxx 单按键触发 2.组合按键触发 一、keyup.xxx or keydown.xxx 1.用法 在我们使用 keyup.enter 时&#xff0c;那么我们可以这样写&#xff1a; <div><input type"text" placeholder"按下回车键以确定..." keyu…

使用adb命令通过数据线操控Android手机设备屏幕

目录 第一步&#xff1a;下载并安装Android SDK Platform-Tools 第二步&#xff1a;启动adb并测试连接 第三步&#xff1a;操控手机 第一步&#xff1a;下载并安装Android SDK Platform-Tools 进入Android开发者网站上找到ADB工具包&#xff08;包含在Android SDK Platform…

苹果手机充电充不进去什么原因?尝试这些方法拯救!

虽然苹果手机价格比较昂贵&#xff0c;但也抵挡不了大家对它的喜爱与追捧。无论是在国内还是国外&#xff0c;苹果手机都拥有着十分庞大的用户群体。 一些使用过苹果手机的朋友表示&#xff0c;苹果手机耗电快并且还出现过充不进电的情况。那么&#xff0c;苹果手机充电充不进…

京东(JD)——利用人工智能实现自动零售

京东(JD)是中国最大的在线零售商之一&#xff0c;也是一家以高科技和人工智能物流而闻名的公司&#xff0c;其人工智能物流系统包括无人机交付系统、自动配送快递车以及机器人自动化配送中心。 京东一直致力于将机器人用于尽可能多地实现零售业务的物理自动化。 1.京东的人工智…

人大女王大学金融硕士项目——努力是人生的态度,实力是你的尊严

改变自己永远不晚&#xff0c;不管你多大&#xff0c;不管你目前的情况有多糟糕&#xff0c;如果你设定一个目标一步一步向前&#xff0c;生活必然会好转。只要你愿意&#xff0c;从现在开始努力&#xff0c;人生最坏的结果&#xff0c;也不过是大器晚成。作为在职人士的你&…

HTML——列表,表格,表单内容的讲解

文章目录 一、列表1.1无序&#xff08;unorder&#xff09;列表1.2 有序&#xff08;order&#xff09;列表1.3 定义列表 二、表格**2.1 基本的表格标签2.2 演示 三、表单3.1 form元素3.2 input元素3.2.1 单选按钮 3.3 selcet元素 基础部分点击&#xff1a; web基础 一、列表 …

springboot项目 jdk8 到 jdk17遇到的问题

1.代码中问题 maven中引入jdk17去掉的包 <dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.0</version> </dependency><dependency><groupId>com.sun.xml.bind</…