云服务器内容精选

  • 规则 有数据持续写入的表,24小时内至少执行一次compaction。 对于MOR表,不管是流式写入还是批量写入,需要保证每天至少完成1次Compaction操作。如果长时间不做compaction,Hudi表的log将会越来越大,这必将会出现以下问题: Hudi表读取很慢,且需要很大的资源。 这是由于读MOR表涉及到log合并,大log合并需要消耗大量的资源并且速度很慢。 长时间进行一次Compaction需要耗费很多资源才能完成,且容易出现OOM。 阻塞Clean,如果没有Compaction操作来产生新版本的Parquet文件,那旧版本的文件就不能被Clean清理,增加存储压力。 CPU与内存比例为1:4~1:8。 Compaction作业是将存量的parquet文件内的数据与新增的log中的数据进行合并,需要消耗较高的内存资源,按照之前的表设计规范以及实际流量的波动结合考虑,建议Compaction作业CPU与内存的比例按照1:4~1:8配置,保证Compaction作业稳定运行。当Compaction出现OOM问题,可以通过调大内存占比解决。 【建议】通过增加并发数提升Compaction性能。
  • 库表管理页面 库表管理页面显示用户创建所有的数据库,您可以查看所有者,表数量等信息。 表1 库表管理参数 参数 参数说明 数据库名称 数据库名称只能包含数字、英文字母和下划线,但不能是纯数字,且不能以下划线开头。 数据库名称大小写不敏感且不能为空。 输入长度不能超过128个字符。 用户名 数据库所有者。 表数量 对应数据库中表的数量。 描述 创建数据库时,对数据库的描述。如果没有描述,则显示“--”。 企业项目 显示所属的企业项目。企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。 关于如何设置企业项目请参考《企业管理用户指南》。 操作 权限管理:可查看“权限信息”,进行“授权”、“权限设置”和“回收用户权限”。 表管理:可查看对应数据库下的表。具体描述请参见表管理页面。 创建表:在对应数据库中创建表。 修改数据库:修改数据库的所有者。必须是相同账户下已存在的用户名。 删除数据库:删除所选数据库。 分配至项目:添加所属的企业项目。 标签:添加/编辑标签。
  • 表管理页面 在“数据管理”页面中,单击对应数据库名称或“操作”列中的“表管理”,可进入其表管理页面。 表管理页面显示用户在当前数据库中创建所有的表,您可以查看表类型,数据存储位置等信息。表列表默认按创建时间排列,创建时间最近的表显示在最前端。 表2 表管理参数 参数 参数说明 表名称 表名称只能包含数字、英文字母和下划线,但不能是纯数字,且不能以下划线开头。 表名称大小写不敏感且不能为空。 表名称支持包含“$”符号。例如:$test。 输入长度不能超过128个字符。 表类型 表的类型。包括以下三种类型: Managed:数据存储位置为DLI的表。 External:数据存储位置为OBS的表。 View:视图。视图只能通过SQL语句创建。 说明: 视图中包含的表或视图信息不可被更改,如有更改可能会造成查询失败。 所有者 创建表的用户。 存储位置 包括DLI、OBS、View、CloudTable、CSS等数据存储位置。 表大小 表中数据的大小。只有Managed类型表会显示具体数值,其他类型表显示“--”。 数据源路径 数据存储位置为OBS时,显示对应的OBS路径。 数据存储位置为DLI和View时,显示“--”。 数据存储位置为CloudTable、CSS等跨源服务时,显示其对应的URL。 创建时间 创建表的时间。 最后访问时间 最后对表进行操作的时间。 表的最后访问时间仅指对表进行更新操作的最后时间,而不是读取(SELECT)操作的时间。 操作 权限管理:可查看“权限信息”,进行“授权”、“权限设置”和“回收用户权限”。 更多: 删除:在对应数据库中删除表。 修改所有者:修改表的所有者。必须是相同账户下已存在的用户名。 导入:将存储在OBS桶中的数据导入至DLI表或OBS表。 导出:仅支持将DLI表的数据导出至OBS桶中。 表属性:可查看“元数据”和“预览”表中的数据。
  • 约束与限制 数据库 “default”为内置数据库,不能创建名为“default”的数据库。 DLI支持创建的数据库的最大数量为50个。 数据表 DLI支持创建的表的最大数量为5000个。 DLI支持创建表类型: Managed:数据存储位置为DLI的表。 External:数据存储位置为OBS的表。 View:视图,视图只能通过SQL语句创建。 跨源表:表类型同样为External。 创建DLI表时不支持指定存储路径。 数据导入 仅支持将OBS上的数据导入DLI或OBS中。 支持将OBS中CSV,Parquet,ORC,JSON和Avro格式的数据导入到在DLI中创建的表。 将CSV格式数据导入分区表,需在数据源中将分区列放在最后一列。 导入数据的编码格式仅支持UTF-8。 数据导出 只支持将DLI表(表类型为“Managed”)中的数据导出到OBS桶中,且导出的路径必须指定到文件夹级别。 导出文件格式为json格式,且文本格式仅支持UTF-8。 支持跨账号导出数据,即B账户对A账户授权后,A账户拥有B账户OBS桶的元数据信息和权限信息的读取权限,以及路径的读写权限,则A账户可将数据导出至B账户的OBS路径中。
  • 编辑临时表 用户可在Data Studio中编辑临时表。如果用户在建表时创建了连接,则断开该连接时,临时表会被自动删除。 在SQL终端编辑临时表时,请确保启用了连接重用功能。有关如何启用该功能,请参阅管理SQL终端连接。 执行以下步骤编辑临时表: 在临时表上执行查询。 “结果”页签会显示SQL查询的结果以及执行的查询语句。 “结果”页签中编辑临时表。可单击“添加”、“删除”、“保存修改”、“取消修改”编辑临时表。 父主题: 表管理
  • 规则 有数据持续写入的表,24小时内至少执行一次compaction。 对于MOR表,不管是流式写入还是批量写入,需要保证每天至少完成1次Compaction操作。如果长时间不做compaction,Hudi表的log将会越来越大,这必将会出现以下问题: Hudi表读取很慢,且需要很大的资源。 这是由于读MOR表涉及到log合并,大log合并需要消耗大量的资源并且速度很慢。 长时间进行一次Compaction需要耗费很多资源才能完成,且容易出现OOM。 阻塞Clean,如果没有Compaction操作来产生新版本的Parquet文件,那旧版本的文件就不能被Clean清理,增加存储压力。 CPU与内存比例为1:4~1:8。 Compaction作业是将存量的parquet文件内的数据与新增的log中的数据进行合并,需要消耗较高的内存资源,按照之前的表设计规范以及实际流量的波动结合考虑,建议Compaction作业CPU与内存的比例按照1:4~1:8配置,保证Compaction作业稳定运行。当Compaction出现OOM问题,可以通过调大内存占比解决。 【建议】通过增加并发数提升Compaction性能。
  • 表简介 表是用来存储键值数据(Key-Value,简称KV)的集合,归属于某个仓。 用户可以在一个仓中创建至少1个或多个表,用来储存键值数据。例如,用一张表记录某个部门所有员工的信息,每一个表就代表一张记录所有员工信息的表。 图1 表简介 KVS云服务支持创建表,查询所有表及详细信息。 表1 KVS云服务支持的表相关功能 功能 描述 创建表 在指定存储仓创建表,同时指定索引。 查询所有表 在指定存储仓查询所有表。 查询表详细信息 在指定存储仓查看某个表的详情 父主题: 表管理
  • 查看数据 右键单击表,选择“查看数据”查看表数据。Data Studio显示“查看数据”页签,可在该页签查看表数据信息。 “查看数据”页签的工具栏菜单: 工具栏名称 说明 复制 用于从“查看数据”页签将数据复制。快捷键为Ctrl+C。 高级复制 用于将结果窗口中的内容复制。可以复制结果以包含行号和/或列标题。请参阅表1以设置此首选项。快捷键为Ctrl+Shift+C。 显示/隐藏搜索栏 用于显示/隐藏搜索文本区域。单击该按钮可在两种状态间切换。 编码 有关如何选择编码,请参见执行SQL查询。 搜索区域中的图标: 图标名称 描述 搜索 用于根据定义的标准,搜索显示的表数据。搜索内容不区分大小写。 清空搜索内容 用于清空在搜索字段中输入的搜索内容。 有关调整列位置或对列进行排序的具体信息,请参阅执行SQL查询。 “查询提交时间”:提供查询的提交时间。 获取的行数和执行时间同时显示,且会显示默认行数。如果有其他记录待获取,此图标将显示为“更多”。用户可将光标滚至表底部读取并显示所有行。 查看表数据时,Data Studio会自动调整列宽。用户可以根据需要调整列的大小。如果单元格的文本内容超出了可用的显示区域,则调整单元格列的大小可能会导致Data Studio无法响应。 表的单元格最多可显示1000个字符,超出部分显示为“...”。 一个表显示一个表数据窗口。 如果已打开的表数据被修改了,刷新并重新打开该表数据并在同一打开的窗口查看更新后的表数据。 数据在加载过程中,表格下方会出现一条“读取中”的消息。 如果列的内容包含空格,会在空格处自动断行以适应该列的显示区域。不包含空格的内容不会自动断行。 要复制单元格中的部分内容,先选中所需部分,然后按下“Ctrl+C”。 列的大小取决于内容最长的列的长度。
  • 编辑表数据 右键单击表,选择“编辑数据”。页面显示“编辑表数据”页签。 有关复制、搜索工具栏和字符编码下拉列表选项的说明,请参阅查看数据。 Data Studio仅识别单元格中的如下数据类型:Bigint、bit、Boolean、char、date、decimal、double、float、integer、numeric、real、smallint、tinyint和varchar。 不支持编辑数组数据类型、包含时区的时间列和包含时区的时间戳列。 数据库上报的与该操作相关的错误会显示在Data Studio中。
  • 重建索引 使用索引可帮助用户更快地查找数据。以下场景需要重建索引: 索引已破坏,不再包含任何有效数据。虽然理论上不会发生,但事实上,索引可能由于软件或硬件故障而被破坏重建索引提供恢复方法。 索引包含很多空的或几乎为空的页面,DWS数据库的B-tree索引在特定的非常规访问模式下可能会发生这种情况,REINDEX方式可以减少索引的空间消耗,即创建一个新的索引,不再有空页面。 已修改索引的存储参数(如“填充因子”),且希望保证修改完全生效。 执行以下操作重建索引: 右键单击表,选择“重建索引”。弹出消息和状态栏显示已完成操作的状态。 分区ORC表不支持重建索引。
  • 导出DDL和数据 通过导出表DDL和数据,可导出表的DDL和表的数据。 在“对象浏览器”窗格中,右键单击所选表,选择“导出DDL和数据”。 用户需自定义导出路径。如果需要将数据压缩,勾选“.zip”选项。 “Data Studio安全免责声明”必须勾选“我同意”才可以单击“确定”。用户可关闭安全免责声明,关闭后导出DDL时将不会再出现,详情请参见表1。 单击“确定”,右下角的状态栏会显示操作进度。 如果文件名包含Windows中文件名不支持的字符,则文件名的名称会与模式名称不同。 要执行该操作,需要MS Visual C Runtime文件(msvcrt100.dll)。详情请参阅故障处理。 “导出完成”对话框和状态栏显示已完成操作的状态。 表1 支持导出DDL的编码格式 数据库编码 文件编码 支持导出DDL UTF-8 UTF-8 是 GBK 是 LATIN1 是 GBK GBK 是 UTF-8 是 LATIN1 否 LATIN1 LATIN1 是 GBK 否 UTF-8 是 可从普通表和分区表中选择多个对象,以导出DDL和数据。导出的内容包含列、行、索引、约束和分区。
  • 查看表属性 右键单击表,选择“属性”查看表属性。 Data Studio在不同页签显示所选表的属性(“一般”、“列”、“约束”和“索引”)。可在每个页签上对指定对象进行编辑,可双击单元格执行编辑操作。 查看表格数据时,Data Studio会自动调整列宽以获得表视图。用户可以根据需要调整列的大小。如果单元格的文本内容超出了可用的显示区域,则调整单元格列的大小可能会导致DS无法响应。 一个表显示一个属性窗口。 如果一个已打开的表格的属性被修改,刷新并重新打开该表格的属性查看更新后的表格属性信息。 如果列的内容包含空格,会在空格处自动断行以适应该列的显示区域。不包含空格的内容不会自动断行。 列的大小取决于内容最长的列的长度。 刷新“属性”页签后,将显示在“对象浏览器”对表属性所做的任何更改。 “Data Type”列不允许粘贴操作。
  • 数据库和表说明 数据库是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。 表是数据库最重要的组成部分之一。表是由行与列组合成的。每一列被当作是一个字段。每个字段中的值代表一种类型的数据。 数据库是一个框架,表是其实质内容。一个数据库包含一个或者多个表。 用户可通过管理控制台或SQL语句创建数据库和表,其中SQL语句的操作方法请参见创建数据库、创建OBS表和创建DLI表等。本章节介绍在管理控制台创建数据库和表的操作步骤。 View只能通过SQL语句进行创建,不能通过“创建表”页面进行创建。
  • 请求示例 POST https://{endpoint} /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables { "table_name" : "tbl86b03ad314fa4ea7943fb769df163a79", "table_type" : "MANAGED_TABLE", "owner" : "onebox", "owner_type" : "USER", "create_time" : "2023-05-31T01:59:54.000+00:00", "last_access_time" : "2023-05-31T01:59:54.000+00:00", "last_analyzed_time" : "2023-05-31T01:59:54.000+00:00", "partition_keys" : [ { "column_type" : "string", "column_name" : "column_prefix0", "comment" : "5456ac36c75947eab223476dafa58ae0" }, { "column_type" : "string", "column_name" : "column_prefix1", "comment" : "d95d1241557e4a769bfcda42974fdf0e" } ], "retention" : 1000, "storage_descriptor" : { "columns" : [ { "column_type" : "string", "column_name" : "column_prefix0", "comment" : "3eb10da96ec84ec6b8543b730c0660b2" }, { "column_type" : "string", "column_name" : "column_prefix1", "comment" : "ee5aa1f3755f425a964f045f59b2c0a0" }, { "column_type" : "string", "column_name" : "column_prefix2", "comment" : "d47884f69582432db1256e60a8e37ea6" }, { "column_type" : "string", "column_name" : "column_prefix3", "comment" : "4e26e910310648f1a97b6e17cb2b25ce" }, { "column_type" : "string", "column_name" : "column_prefix4", "comment" : "85084620943b4d36a9e5d6a856307e73" }, { "column_type" : "string", "column_name" : "column_prefix5", "comment" : "f78264b5d8ab4409a3a05ebb0434424e" }, { "column_type" : "string", "column_name" : "column_prefix6", "comment" : "45df8ef109374ac6ab9aaa371b29baa7" }, { "column_type" : "string", "column_name" : "column_prefix7", "comment" : "c006d18cc411429bacc0f0e1eb75f99e" }, { "column_type" : "string", "column_name" : "column_prefix8", "comment" : "58e1c81b2c0a4c089570106c8bb4461d" }, { "column_type" : "string", "column_name" : "column_prefix9", "comment" : "32cc797a16f348ebbf5f2e1f85969603" } ], "location" : "obs://location/test/database/5e2941387d8741afa217677361d0676f", "compressed" : false, "input_format" : "850fd4c238934dfdaa3006f388d71f9d", "output_format" : "740f42961f1146d39abe19beadc2ad89", "number_of_buckets" : 0, "bucket_columns" : [ ], "sort_columns" : [ ], "serde_info" : { "name" : "a247cc09ce74477e8c95915bb45e9878", "serialization_library" : "9dad2d1dfe944e1d83747997188ed445", "parameters" : { "347f5f03fdaf46489a39e308be3d2160" : "317b872caa5d4de7bed96f644028ed83" } }, "parameters" : { "ce43c3c8b9854b749dddabe76c487dd8" : "67393e5c0dc649479399603f6adf1432", "8805af26461e49feaf5fb67eef8da574" : "f956a8ac29514f57af9da84043b845f0" }, "skewed_info" : { "skewed_column_names" : [ ], "skewed_column_value_location_maps" : { }, "skewed_column_values" : [ ] }, "stored_as_sub_directories" : false }, "parameters" : { "key1" : "value1", "transient_lastDdlTime" : "120", "classification" : "other" }, "comments" : "comment info" }
  • 响应示例 状态码: 201 Created { "catalog_name" : "catcd6359b2a15f42dc90fca897c15db00a", "database_name" : "dbbf565489e3d04b2d8ca03d6e3d48486f", "table_name" : "tbl1298911dffa94c449a900ec5dfc50cf8", "create_time" : "2023-05-31T02:03:44.016+00:00", "last_access_time" : "2023-05-31T02:03:43.000+00:00", "update_time" : "2023-05-31T02:03:44.016+00:00", "last_analyzed_time" : "2023-05-31T02:03:43.000+00:00", "owner" : "onebox", "owner_type" : "USER", "parameters" : { "key1" : "value1", "transient_lastDdlTime" : "120", "classification" : "other" }, "partition_keys" : [ { "column_type" : "string", "column_name" : "column_prefix0", "comment" : "8be09e713e6b46a08b375b662f93e195" }, { "column_type" : "string", "column_name" : "column_prefix1", "comment" : "6874d3047a6c494696438fc64d9a0194" } ], "retention" : 1000, "storage_descriptor" : { "columns" : [ { "column_type" : "string", "column_name" : "column_prefix0", "comment" : "5a2968f6141c4d40969c935c39b5accc" }, { "column_type" : "string", "column_name" : "column_prefix1", "comment" : "39ac0d5c26ce47d8948a5ea49a455742" }, { "column_type" : "string", "column_name" : "column_prefix2", "comment" : "a8d51537564a4042ab3d88a0acfccf83" }, { "column_type" : "string", "column_name" : "column_prefix3", "comment" : "d541dd8c95bf4d49853ae5563869821e" }, { "column_type" : "string", "column_name" : "column_prefix4", "comment" : "9955f7831b3b4bdc8a18c2e20b592976" }, { "column_type" : "string", "column_name" : "column_prefix5", "comment" : "32115b31e61245fd94162f566c6db966" }, { "column_type" : "string", "column_name" : "column_prefix6", "comment" : "a6d61e1ad9e14a6da94e242607369284" }, { "column_type" : "string", "column_name" : "column_prefix7", "comment" : "9dd785a2f6744fa2a8c5a64d78147961" }, { "column_type" : "string", "column_name" : "column_prefix8", "comment" : "60128f0062a949559f0c95f2656812ae" }, { "column_type" : "string", "column_name" : "column_prefix9", "comment" : "99d4d3e57af64bd1bb287b5a305b7225" } ], "location" : "obs://location/test/database/0b288717b41a411dacdd0c9fa2e1c275", "compressed" : false, "input_format" : "c28e802613a342568a667aeba4961979", "output_format" : "9bf425a38fd540c69b68366071b8bbd5", "number_of_buckets" : 0, "bucket_columns" : [ ], "sort_columns" : [ ], "serde_info" : { "name" : "e044a1458d8c4b7a871e54243d2adb93", "serialization_library" : "bb299f2201fe4da0886ecd380a1508a3", "parameters" : { "2980009b8dfd4b3bb78a96485a3728c2" : "f83395c8db5e4ac1803892b08c209799" } }, "parameters" : { "64f073b0a9bd49cb8437681f3faa1538" : "f4154f400e6e465cbc8b8b2033a24faf", "f31bf1375d4d4097b68e9816388e50a8" : "881546d1b0184048b03ad20d1218104d" }, "skewed_info" : { "skewed_column_names" : [ ], "skewed_column_value_location_maps" : { }, "skewed_column_values" : [ ] }, "stored_as_sub_directories" : false }, "table_type" : "EXTERNAL_TABLE", "comments" : "comment info" } 状态码: 400 Bad Request { "error_code" : "common.01000001", "error_msg" : "failed to read http request, please check your input, code: 400, reason: Type mismatch., cause: TypeMismatchException" } 状态码: 401 Unauthorized { "error_code": 'APIG.1002', "error_msg": 'Incorrect token or token resolution failed' } 状态码: 403 Forbidden { "error" : { "code" : "403", "message" : "X-Auth-Token is invalid in the request", "error_code" : null, "error_msg" : null, "title" : "Forbidden" }, "error_code" : "403", "error_msg" : "X-Auth-Token is invalid in the request", "title" : "Forbidden" } 状态码: 404 Not Found { "error_code" : "common.01000001", "error_msg" : "response status exception, code: 404" } 状态码: 408 Request Timeout { "error_code" : "common.00000408", "error_msg" : "timeout exception occurred" } 状态码: 500 Internal Server Error { "error_code" : "common.00000500", "error_msg" : "internal error" }