阿里云助力您在中国加快取得成功
一站式安全合规咨询服务
MLPS 2.0 一站式合规解决方案
依托我们的网络进军中国市场
提升面向互联网应用的性能和安全性
保障您的中国业务安全无忧
通过强大的数据安全框架保护您的数据资产
申请 ICP 备案的流程解读和咨询服务
面向大数据建设、管理及应用的全域解决方案
企业内大数据建设、管理和应用的一站式解决方案
将您的采购和销售置于同一企业级全渠道数字平台上
全渠道内置 AI 驱动、拟人化、多语言对话的聊天机器人
快速搭建在线教育平台
提供域名注册、分析和保护服务
即时部署可伸缩的虚拟云服务器
完全托管、本地部署的阿里云基础架构和服务。
阿里云开放给企业应用服务商和其客户的服务管理PaaS平台
助您构建公共云上的专有资源池
富弹性可伸缩的高性能计算服务
易用、安全、高效的云上桌面服务
高效运维、稳定安全和操作流畅的云端虚拟手机
基于GPU的弹性计算服务
可快速搭建应用且易于管理的轻量级云服务器
根据用户的业务需求和策略,自动调整其弹性计算资源的管理服务
云原生 Kubernetes 容器化应用运行环境
以 Kubernetes 为使用界面的容器服务产品,提供符合容器规范的算力资源
安全的镜像托管服务,支持全生命周期管理
多集群环境下微服务应用流量统一管理
提供任意基础设施上容器集群的统一管控,助您轻松管控分布式云场景
高弹性、高可靠的企业级无服务器 Kubernetes 容器产品
敏捷安全的 Serverless 容器运行服务
为虚拟机和容器提供高可靠性、高性能、低时延的块存储服务
一款海量、安全、低成本、高可靠的云存储服务
可靠、弹性、高性能、多共享的文件存储服务
全托管、可扩展的并行文件系统服务。
全托管的 NoSQL 结构化数据实时存储服务
可抵扣多种存储产品的容量包,兼具灵活性和长期成本优化
让您的应用跨不同可用区资源自动分配访问量
随时绑定和解绑 VPC ECS
云网络公网、跨域流量统一计费
高性价比,可抵扣按流量计费的流量费用
创建云上隔离的网络,在专有环境中运行资源
在 VPC 环境下构建公网流量的出入口
具备网络状态可视化、故障智能诊断能力的自助式网络运维服务。
安全便捷的云上服务专属连接
基于阿里云专有网络的私有 DNS 解析服务
保障在线业务不受大流量 DDoS 攻击影响
系统运维和安全审计管控平台
业务上云的第一个网络安全基础设施
集零信任内网访问、办公数据保护、终端管理等多功能于一体的办公安全管控平台
提供7X24小时安全运维平台
防御常见 Web 攻击,缓解 HTTP 泛洪攻击
实现全站 HTTPS,呈现可信的 WEB 访问
为云上应用提供符合行业标准和密码算法等级的数据加解密、签名验签和数据认证能力
一款发现、分类和保护敏感数据的安全服务
创建、控制和管理您的加密密钥
快速提高应用高可用能力服务
围绕应用和微服务的 PaaS 平台
兼容主流开源微服务生态的一站式平台
多集群环境下微服务应用流量统一管理
企业级全托管实时数据流平台
全托管,开箱即用的Apache Kafka全托管服务
提供物联网移动端和云交互的消息队列
开箱即用的全托管 RabbitMQ 服务
提供基于消息的可靠异步通信机制
应用之间的消息队列和通知
无服务器事件总线服务
Super MySQL 和 PostgreSQL,高度兼容 Oracle 语法
全托管 MySQL、PostgreSQL、SQL Server、MariaDB
兼容 Redis® 的缓存和KV数据库
兼容Apache Cassandra、Apache HBase、Elasticsearch、OpenTSDB 等多种开源接口
文档型数据库,支持副本集和分片架构
100%兼容 Apache HBase 并深度扩展,稳定、易用、低成本的NoSQL数据库。
低成本、高可用、可弹性伸缩的在线时序数据库服务
专为搜索和分析而设计,成本效益达到开源的两倍,采用最新的企业级AI搜索和AI助手功能。
一款兼容PostgreSQL协议的实时交互式分析产品
一种快速、完全托管的 TB/PB 级数据仓库
基于 Flink 为大数据行业提供解决方案
基于Qwen和其他热门模型的一站式生成式AI平台,可构建了解您业务的智能应用程
一站式机器学习平台,满足数据挖掘分析需求
高性能向量检索服务,提供低代码API和高成本效益
帮助您的应用快速构建高质量的个性化推荐服务能力
提供定制化的高品质机器翻译服务
全面的AI计算平台,满足大模型训练等高性能AI计算的算力和性能需求
具备智能会话能力的会话机器人
基于机器学习的智能图像搜索产品
基于阿里云深度学习技术,为用户提供图像分割、视频分割、文字识别等离线SDK能力,支持Android、iOS不同的适用终端。
语音识别、语音合成服务以及自学习平台
一站式智能搜索业务开发平台
助力金融企业快速搭建超低时延、高质量、稳定的行情数据服务
帮助企业快速测算和分析企业的碳排放和产品碳足迹
企业工作流程自动化,全面提高效率
金融级云原生分布式架构的一站式高可用应用研发、运维平台
eKYC 数字远程在线解决方案
可智能检测、大数据驱动的综合性反洗钱 (AML) 解决方案
阿里云APM类监控产品
实时云监控服务,确保应用及服务器平稳运行
为系统运维人员管理云基础架构提供全方位服务的云上自动化运维平台
面向您的云资源的风险检测服务
提升分布式环境下的诊断效率
日志类数据一站式服务,无需开发就能部署
ECS 预留实例
让弹性计算产品的成本和灵活性达到最佳平衡的付费方式。云原生 AI 套件
加速AI平台构建,提高资源效率和交付速度FinOps
实时分析您的云消耗并实现节约SecOps
实施细粒度安全控制DevOps
快速、安全地最大限度提高您的DevOps优势自带IP上云
自带公网 IP 地址上云全球网络互联
端到端的软件定义网络解决方案,可推动跨国企业的业务发展全球应用加速
提升面向互联网应用的性能和安全性全球互联网接入
将IDC网关迁移到云端云原生 AI 套件
加速AI平台构建,提高资源效率和交付速度FinOps
实时分析您的云消耗并实现节约SecOps
实施细粒度安全控制DevOps
快速、安全地最大限度提高您的DevOps优势金融科技云数据库解决方案
利用专为金融科技而设的云原生数据库解决方案游戏行业云数据库解决方案
提供多种成熟架构,解决所有数据问题Oracle 数据库迁移
将 Oracle 数据库顺利迁移到云原生数据库数据库迁移
加速迁移您的数据到阿里云阿里云上的数据湖
实时存储、管理和分析各种规模和类型的数据数码信贷
利用大数据和 AI 降低信贷和黑灰产风险面向企业数据技术的大数据咨询服务
帮助企业实现数据现代化并规划其数字化未来人工智能对话服务
全渠道内置 AI 驱动、拟人化、多语言对话的聊天机器人EasyDispatch 现场服务管理
为现场服务调度提供实时AI决策支持在线教育
快速搭建在线教育平台窄带高清 (HD) 转码
带宽成本降低高达 30%广电级大型赛事直播
为全球观众实时直播大型赛事,视频播放流畅不卡顿直播电商
快速轻松地搭建一站式直播购物平台用于供应链规划的Alibaba Dchain
构建和管理敏捷、智能且经济高效的供应链云胸牌
针对赛事运营的创新型凭证数字服务数字门店中的云 POS 解决方案
将所有操作整合到一个云 POS 系统中元宇宙
元宇宙是下一代互联网人工智能 (AI) 加速
利用阿里云 GPU 技术,为 AI 驱动型业务以及 AI 模型训练和推理加速DevOps
快速、安全地最大限度提高您的DevOps优势数据迁移解决方案
加速迁移您的数据到阿里云企业 IT 治理
在阿里云上构建高效可控的云环境基于日志管理的AIOps
登录到带有智能化日志管理解决方案的 AIOps 环境备份与存档
数据备份、数据存档和灾难恢复用阿里云金融服务加快创新
在云端开展业务,提升客户满意度
为全球资本市场提供安全、准确和数字化的客户体验
利用专为金融科技而设的云原生数据库解决方案
利用大数据和 AI 降低信贷和黑灰产风险
建立快速、安全的全球外汇交易平台
新零售时代下,实现传统零售业转型
利用云服务处理流量波动问题,扩展业务运营、降低成本
快速轻松地搭建一站式直播购物平台
面向大数据建设、管理及应用的全域解决方案
全渠道内置 AI 驱动、拟人化、多语言对话的聊天机器人
以数字化媒体旅程为当今的媒体市场准备就绪您的内容
带宽成本降低高达 30%
快速轻松地搭建一站式直播购物平台
为全球观众实时直播大型赛事,视频播放流畅不卡顿
使用阿里云弹性高性能计算 E-HPC 将本地渲染农场连接到云端
构建发现服务,帮助客户找到最合适的内容
保护您的媒体存档安全
通过统一的数据驱动平台提供一致的全生命周期客户服务
在钉钉上打造一个多功能的电信和数字生活平台
在线存储、共享和管理照片与文件
提供全渠道的无缝客户体验
面向中小型企业,为独立软件供应商提供可靠的IT服务
打造最快途径,助力您的新云业务扬帆起航
先进的SD-WAN平台,可实现WAN连接、实时优化并降低WAN成本
通过自动化和流程标准化实现快速事件响应
针对关键网络安全威胁提供集中可见性并进行智能安全分析
提供大容量、可靠且高度安全的企业文件传输
用智能技术数字化体育赛事
基于人工智能的低成本体育广播服务
专业的广播转码及信号分配管理服务
基于云的音视频内容引入、编辑和分发服务
在虚拟场馆中模拟关键运营任务
针对赛事运营的创新型凭证数字服务
智能和交互式赛事指南
轻松管理云端背包单元的绑定直播流
通过数据加强您的营销工作
元宇宙是下一代互联网
加速迁移您的数据到阿里云
在阿里云上建立一个安全且易扩容的环境,助力高效率且高成本效益的上云旅程
迁移到完全托管的云数据库
将 Oracle 数据库顺利迁移到云原生数据库
自带公网 IP 地址上云
利用阿里云强大的安全工具集,保障业务安全、应用程序安全、数据安全、基础设施安全和帐户安全
保护、备份和还原您的云端数据资产
MLPS 2.0 一站式合规解决方案
快速高效地将您的业务扩展到中国,同时遵守适用的当地法规
实现对 CloudOps、DevOps、SecOps、AIOps 和 FinOps 的高效、安全和透明的管理
构建您的原生云环境并高效管理集群
快速、安全地最大限度提高您的DevOps优势
实施细粒度安全控制
提供运维效率和总体系统安全性
实时分析您的云消耗并实现节约
利用生成式 AI 加速创新,创造新的业务佳绩
阿里云高性能开源大模型
探索阿里云人工智能和数据智能的所有功能、新优惠和最新产品
该体验中心提供广泛的用例和产品帮助文档,助您开始使用阿里云 AI 产品和浏览您的业务数据。
利用阿里云 GPU 技术,为 AI 驱动型业务以及 AI 模型训练和推理加速
元宇宙是下一代互联网
构建发现服务,帮助客户找到最合适的内容
全渠道内置 AI 驱动、拟人化、多语言对话的聊天机器人
实时存储、管理和分析各种规模和类型的数据
登录到带有智能化日志管理解决方案的 AIOps 环境
帮助企业实现数据现代化并规划其数字化未来
帮助零售商快速规划数字化之旅
将全球知名的 CRM 平台引入中国
在线存储、共享和管理照片与文件
构建、部署和管理高可用、高可靠、高弹性的应用程序
快速、安全地最大限度提高您的DevOps优势
将您的采购和销售置于同一企业级全渠道数字平台上
企业内大数据建设、管理和应用的一站式解决方案
帮助企业简化 IT 架构、实现商业价值、加速数字化转型的步伐
快速高效地将您的业务扩展到中国,同时遵守适用的当地法规
快速搜集、处理、分析联网设备产生的数据
0.0.201
本文将为您介绍如何通过DataWorks创建、配置外部表,以及外部表支持的字段类型。
使用外部表前,您需要了解下表中的定义。
名称 | 描述 |
名称 | 描述 |
对象存储OSS | 提供标准、低频、归档存储类型,能够覆盖不同的存储场景。同时,OSS能够与Hadoop开源社区及EMR、批量计算、MaxCompute、机器学习和函数计算等产品进行深度结合。 |
MaxCompute | 大数据计算服务MaxCompute为您提供快速且完全托管的数据仓库解决方案,并可以通过与OSS的结合,高效经济地分析处理海量数据。 |
MaxCompute外部表 | 该功能基于MaxCompute新一代的V2.0计算框架,可以帮助您直接对OSS中的海量文件进行查询,无需将数据加载至MaxCompute表中。既减少了数据迁移的时间和人力,也节省了存储的成本。 |
下图为外部表的整体处理架构。
目前,MaxCompute主要支持OSS和OTS等非结构化存储的外部表。从数据的流动和处理逻辑的角度,非结构化处理框架在MaxCompute计算平台两端有耦合地进行数据导入和导出。以OSS外部表为例,处理逻辑如下:
外部的OSS数据经过非结构化框架转换,使用JAVA InputStream类提供给您自定义代码接口。您可以自己实现Extract逻辑,只需要负责对输入的InputStream进行读取、解析、转化和计算,最终返回MaxCompute计算平台通用的Record格式。
上述Record可以自由参与MaxCompute的SQL逻辑运算,该部分计算基于MaxCompute内置的结构化SQL运算引擎,并可能产生新的Record。
经过运算的Record传递给用户自定义的Output逻辑,您可以进行进一步的计算转换,并最终通过系统提供的OutputStream,输出Record中需要输出的信息,由系统负责写入至OSS。
您可以通过DataWorks配合MaxCompute,对外部表进行可视化的创建、搜索、查询、配置、加工和分析等操作。
由于MaxCompute与OSS是两个独立的云计算与云存储服务,所以在不同的部署集群上的网络连通性有可能影响MaxCompute访问OSS的数据的可达性。在MaxCompute中访问OSS存储时,建议您使用OSS私网地址(即以-internal.aliyuncs.com结尾的host地址)。
MaxCompute需要有一个安全的授权通道访问OSS数据。MaxCompute结合了阿里云的访问控制服务(RAM)和令牌服务(STS)实现对数据的安全访问。MaxCompute在获取权限时,以表的创建者的身份在STS申请权限(OTS的权限设置与OSS一致)。
STS模式授权
MaxCompute需要直接访问OSS的数据,因此需要将OSS数据相关权限赋给MaxCompute的访问账号。STS是阿里云为客户提供的一种安全令牌管理服务,它是资源访问管理(RAM)产品中的一员。通过STS服务,获得许可的云服务或RAM用户,可以自主颁发自定义时效和子权限的访问令牌。获得访问令牌的应用程序,可以使用令牌直接调用阿里云服务API操作资源。
您可以通过以下两种方式进行授权:
当MaxCompute和OSS的项目所有者是同一个账号时,请直接登录阿里云账号后进行一键授权。
打开新建表的编辑页面,找到物理模型设计模块。
勾选表类型后的外部表。
单击选择存储地址后的一键授权。
单击云资源访问授权对话框中的同意授权。
自定义授权,在RAM中授予MaxCompute访问OSS的权限。
登录RAM控制台。
如果MaxCompute和OSS不是同一个账号,此处需要由OSS账号登录并授权。
单击左侧导航栏中的身份管理 > 角色。
单击创建角色,选择可信实体类型为阿里云账号,单击下一步。
输入角色名称和备注。
设置角色名称为AliyunODPSDefaultRole或AliyunODPSRoleForOtherUser。
选择信任的云账号为当前云账号或其他云账号。
如果选择其他云账号,请输入其他云账号的ID。
配置角色详情。
在RAM角色管理页面,单击相应的RAM角色名称。在信任策略管理页签下,单击编辑信任策略,根据自身情况输入下述策略内容。
--当MaxCompute和OSS的Owner是同一个账号。
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"odps.aliyuncs.com"
]
}
}
],
"Version": "1"
}
--当MaxCompute和OSS的Owner不是同一个账号。
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"MaxCompute的Owner云账号id@odps.aliyuncs.com"
]
}
}
],
"Version": "1"
}
配置完成后,单击保存信任策略。
配置角色授权策略,并找到授予角色访问OSS必要的权限AliyunODPSRolePolicy,将权限AliyunODPSRolePolicy授权给该角色。如果您无法通过搜索授权找到,可以通过精确授权直接添加。
{
"Version": "1",
"Statement": [
{
"Action": [
"oss:ListBuckets",
"oss:GetObject",
"oss:ListObjects",
"oss:PutObject",
"oss:DeleteObject",
"oss:AbortMultipartUpload",
"oss:ListParts"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ots:ListTable",
"ots:DescribeTable",
"ots:GetRow",
"ots:PutRow",
"ots:UpdateRow",
"ots:DeleteRow",
"ots:GetRange",
"ots:BatchGetRow",
"ots:BatchWriteRow",
"ots:ComputeSplitPointsBySize"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"pvtz:DescribeRegions",
"pvtz:DescribeZones",
"pvtz:DescribeZoneInfo",
"pvtz:DescribeVpcs",
"pvtz:DescribeZoneRecords"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"dlf:CreateFunction",
"dlf:BatchGetPartitions",
"dlf:ListDatabases",
"dlf:CreateLock",
"dlf:UpdateFunction",
"dlf:BatchUpdateTables",
"dlf:DeleteTableVersion",
"dlf:UpdatePartitionColumnStatistics",
"dlf:ListPartitions",
"dlf:DeletePartitionColumnStatistics",
"dlf:BatchUpdatePartitions",
"dlf:GetPartition",
"dlf:BatchDeleteTableVersions",
"dlf:ListFunctions",
"dlf:DeleteTable",
"dlf:GetTableVersion",
"dlf:AbortLock",
"dlf:GetTable",
"dlf:BatchDeleteTables",
"dlf:RenameTable",
"dlf:RefreshLock",
"dlf:DeletePartition",
"dlf:UnLock",
"dlf:GetLock",
"dlf:GetDatabase",
"dlf:GetFunction",
"dlf:BatchCreatePartitions",
"dlf:ListPartitionNames",
"dlf:RenamePartition",
"dlf:CreateTable",
"dlf:BatchCreateTables",
"dlf:UpdateTableColumnStatistics",
"dlf:ListTableNames",
"dlf:UpdateDatabase",
"dlf:GetTableColumnStatistics",
"dlf:ListFunctionNames",
"dlf:ListPartitionsByFilter",
"dlf:GetPartitionColumnStatistics",
"dlf:CreatePartition",
"dlf:CreateDatabase",
"dlf:DeleteTableColumnStatistics",
"dlf:ListTableVersions",
"dlf:BatchDeletePartitions",
"dlf:ListCatalogs",
"dlf:UpdateTable",
"dlf:ListTables",
"dlf:DeleteDatabase",
"dlf:BatchGetTables",
"dlf:DeleteFunction"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
使用OSS数据源
如果您已创建并保存了OSS数据源,请在工作空间列表页面找到您所创建的工作空间,单击操作列的管理,在数据源页面进行查看和使用。
DDL模式建表
进入数据开发页面,参见创建并使用MaxCompute表进行DDL模式建表,您只需要遵守正常的MaxCompute语法即可。如果您的STS服务已成功授权,则无需设置odps.properties.rolearn属性。
DDL建表语句示例如下,其中EXTERNAL参数说明该表为外部表。
CREATE EXTERNAL TABLE IF NOT EXISTS ambulance_data_csv_external(
vehicleId int,
recordId int,
patientId int,
calls int,
locationLatitute double,
locationLongtitue double,
recordTime string,
direction string
)
STORED BY 'com.aliyun.odps.udf.example.text.TextStorageHandler' --STORED BY用于指定自定义格式StorageHandler的类名或其它外部表文件格式,必选。
with SERDEPROPERTIES (
'delimiter'='\\|', --SERDEPROPERTIES序列化属性参数,可以通过DataAttributes传递到Extractor代码中,可选。
'odps.properties.rolearn'='acs:ram::xxxxxxxxxxxxx:role/aliyunodpsdefaultrole'
)
LOCATION 'oss://oss-cn-shanghai-internal.aliyuncs.com/oss-odps-test/Demo/SampleData/CustomTxt/AmbulanceData/' --外部表存放地址,必选。
USING 'odps-udf-example.jar'; --指定自定义格式时类定义所在的Jar包,如果未使用自定义格式无需指定。
关于STORED BY后接参数,其中CSV或TSV文件对应默认内置的StorageHandler,具体参数如下:
CSV为com.aliyun.odps.CsvStorageHandler
,定义如何读写CSV格式数据,数据格式约定列分隔符为英文逗号(,)、换行符为(\n)。实际参数输入示例:STORED BY'com.aliyun.odps.CsvStorageHandler'
。
TSV为 com.aliyun.odps.TsvStorageHandler
,定义如何读写TSV格式数据,数据格式约定列分隔符为(\t)、换行符为(\n)。
STORED BY后接参数还支持ORC、PARQUET、SEQUENCEFILE、RCFILE、AVRO和TEXTFILE 开源格式外部表,如下所示。对于textFile可以指定序列化类,例如org.apache.hive.hcatalog.data.JsonSerDe
。
org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe -> stored as textfile
org.apache.hadoop.hive.ql.io.orc.OrcSerde -> stored as orc
org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe -> stored as parquet
org.apache.hadoop.hive.serde2.avro.AvroSerDe -> stored as avro
org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe -> stored as sequencefile
对于开源格式外部表,建表语句如下。
CREATE EXTERNAL TABLE [IF NOT EXISTS] (<column schemas>)
[PARTITIONED BY (partition column schemas)]
[ROW FORMAT SERDE '']
STORED AS
[WITH SERDEPROPERTIES ( 'odps.properties.rolearn'='${roleran}'
[,'name2'='value2',...]
) ]
LOCATION 'oss://${endpoint}/${bucket}/${userfilePath}/';
SERDEPROPERTIES序列化属性列表如下所示。
属性名 | 属性值 | 默认值 | 描述 |
属性名 | 属性值 | 默认值 | 描述 |
odps.text.option.gzip.input.enabled | true/false | false | 打开或关闭读压缩 |
odps.text.option.gzip.output.enabled | true/false | false | 打开或关闭写压缩 |
odps.text.option.header.lines.count | 非负整数 | 0 | 跳过文本文件头N行 |
odps.text.option.null.indicator | 字符串 | 空字符串 | 在解析或者写出NULL值时,代表NULL的字符串 |
odps.text.option.ignore.empty.lines | true/false | true | 是否忽略空行 |
odps.text.option.encoding | UTF-8/UTF-16/US-ASCII | UTF-8 | 指定文本的字符编码 |
MaxCompute目前仅支持通过内置extractor读取OSS上gzip压缩的CSV或TSV数据,您可以选择文件是否是gzip压缩,不同的文件格式对应不同的属性设置。
LOCATION参数,格式为:oss://oss-cn-shanghai-internal.aliyuncs.com/Bucket名称/目录名称。您可以通过图形对话框选择获得OSS目录地址,目录后无需加文件名称。
DDL模式创建的表会出现在表管理的表节点树下,可以通过修改其一级、二级主题来调整显示位置。
OTS外部表
OTS外部表建表语句如下。
CREATE EXTERNAL TABLE IF NOT EXISTS ots_table_external(
odps_orderkey bigint,
odps_orderdate string,
odps_custkey bigint,
odps_orderstatus string,
odps_totalprice double
)
STORED BY 'com.aliyun.odps.TableStoreStorageHandler'
WITH SERDEPROPERTIES (
'tablestore.columns.mapping'=':o_orderkey,:o_orderdate,o_custkey, o_orderstatus,o_totalprice', -- (3)
'tablestore.table.name'='ots_tpch_orders'
'odps.properties.rolearn'='acs:ram::xxxxx:role/aliyunodpsdefaultrole'
)
LOCATION 'tablestore://odps-ots-dev.cn-shanghai.ots-internal.aliyuncs.com';
参数说明如下:
com.aliyun.odps.TableStoreStorageHandler是MaxCompute内置的处理TableStore数据的StorageHandler。
SERDEPROPERTIES是提供参数选项的接口,在使用TableStoreStorageHandler时,有两个必须指定的选项:tablestore.columns.mapping和 tablestore.table.name。
tablestore.columns.mapping:必选项,用来描述MaxCompute将访问的Table Store表的列,包括主键和属性以(:)打头的用来表示Table Store主键,例如此语句中的:o_orderkey
和:o_orderdate
,其它均为属性列。
Table Store支持1~4个主键,主键类型为STRING、INTEGER和BINARY,其中第一个主键为分区键。指定映射时,您必须提供指定Table Store表的所有主键,对于属性列则没有必要全部提供,可以只提供需要通过MaxCompute来访问的属性列。
tablestore.table.name:需要访问的Table Store表名。如果指定的Table Store表名错误(不存在),则会报错, MaxCompute不会主动去创建Table Store表。
LOCATION:用来指定Table Storeinstance名字、endpoint等具体信息。
图形化建表
进入数据开发页面,参见创建并使用MaxCompute表进行图形化建表。外部表具有如下属性:
基本属性
英文表名(在新建表时输入)
中文表名
一级、二级主题
描述
物理模型设计
表类型:请选择为外部表。
分区类型:OTS类型外部表不支持分区。
选择存储地址:即LOCATION参数。您可以在物理模型设计栏中设置LOCATION参数。单击点击选择,即可选择存储地址。选择完成后,单击一键授权。
选择存储格式:根据业务需求进行选择,支持CSV、TSV、ORC、PARQUET、SEQUENCEFILE、RCFILE、AVRO、TEXTFILE和自定义文件格式。如果您选择了自定义文件格式,需要选择自定义的资源。在提交资源时,可以自动解析出其包含的类名并可以供用户选取。
rolearn:如果STS已授权,可以不填写。
表结构设计
参数 | 描述 |
参数 | 描述 |
字段类型 | MaxCompute 2.0支持TINYINT、SMALLINT、INT、BIGINT、VARCHAR和STRING类型。 |
操作 | 支持新增、修改和删除。 |
长度/设置 | 对于VARCHAR类型,可以支持设置长度。对于复杂类型可以直接填写复杂类型的定义。 |
外部表支持的简单字段类型如下表所示。
类型 | 是否新增 | 格式举例 | 描述 |
类型 | 是否新增 | 格式举例 | 描述 |
TINYINT | 是 | 1Y,-127Y | 8位有符号整型,范围为-128~127。 |
SMALLINT | 是 | 32767S, -100S | 16位有符号整型,范围为-32,768~32,767。 |
INT | 是 | 1000,-15645787 | 32位有符号整型,范围为-2^31~2^31-1。 |
BIGINT | 否 | 100000000000L, -1L | 64位有符号整型,范围为-2^63+1~2^63-1。 |
FLOAT | 是 | 无 | 32位二进制浮点型。 |
DOUBLE | 否 | 3.1415926 1E+7 | 8字节双精度浮点数,64位二进制浮点型。 |
DECIMAL | 否 | 3.5BD,99999999999.9999999BD | 10进制精确数字类型,整型部分范围为-1,036+1~1,036-1,小数部分精确到10~18。 |
VARCHAR(n) | 是 | 无 | 变长字符类型,n为长度,取值范围为1~65,535。 |
STRING | 否 | “abc”,’bcd’,”alibaba” | 字符串类型,目前长度限制为8MB。 |
BINARY | 是 | 无 | 二进制数据类型,目前长度限制为8MB。 |
DATETIME | 否 | DATETIME ‘2017-11-11 00:00:00’ | 日期时间类型,使用东八区时间作为系统标准时间。范围0000年1月1日~9999年12月31日,精确到毫秒。 |
TIMESTAMP | 是 | TIMESTAMP ‘2017-11-11 00:00:00.123456789’ | 与时区无关的时间戳类型,范围为0000年1月1日~9999年12月31日23.59:59.999,999,999,精确到纳秒。 |
BOOLEAN | 否 | 包括TRUE和FALSE | BOOLEAN类型,取值TRUE或FALSE。 |
外部表支持的复杂字段类型如下表所示。
类型 | 定义方法 | 构造方法 |
类型 | 定义方法 | 构造方法 |
ARRAY | array< int >; array< struct< a:int, b:string >> | array(1, 2, 3); array(array(1, 2); array(3, 4)) |
MAP | map< string, string >; map< smallint, array< string>> | map(“k1”, “v1”, “k2”, “v2”); map(1S, array(‘a’, ‘b’), 2S, array(‘x’, ‘y)) |
STRUCT | struct< x:int, y:int>; struct< field1:bigint, field2:array< int>, field3:map< int, int>> | named_struct(‘x’, 1, ‘y’, 2); named_struct(‘field1’, 100L, ‘field2’, array(1, 2), ‘field3’, map(1, 100, 2, 200)) |
如果需要使用MaxCompute 2.0支持的新数据类型(TINYINT、SMALLINT、 INT、 FLOAT、VARCHAR、TIMESTAMP 、BINARY或复杂类型),需要在建表语句前加上语句set odps.sql.type.system.odps2=true;
,set语句和建表语句一起提交执行。如果需要兼容HIVE,建议加上语句odps.sql.hive.compatible=true;
。
您可以在数据开发页面,单击左侧导航栏中的表管理,查询外部表,详情请参见表管理。处理外部表的方式与内部表基本一致。