使用DataWorks导入 Maxcompute 数据

发布时间:2026/8/11 2:11:40
使用DataWorks导入 Maxcompute 数据 文章目录一、简介二、Hologres SQL三、一键表结构导入四、一键表数据同步五、通过DataWorks周期性导入MaxCompute1、数据准备2、操作步骤一、简介DataWorks基于Hologres、MaxCompute等大数据计算引擎为您提供专业高效、安全可靠的一站式大数据开发与治理平台。Hologres与DataWorks深度兼容通过可视化方式支持您在DataWorks中使用DataStudio模块进行数据的SQL开发为您提供标准化、无门槛的开发服务和一站式构建实时数据仓库服务以及高效、便捷的管理服务。同时结合DataWorks的调度等能力简便、快捷地完成数据的处理和应用。功能DataStudio为您提供了界面化、智能高效的大数据开发与测试服务您可以在绑定Hologres实例后通过使用Hologres节点进行Hologres数据开发包括SQL管理、MaxCompute数据同步等功能。DataStudio支持的Hologres节点功能如下Hologres SQL您可以使用标准的PostgreSQL进行Hologres开发并将SQL提交调度进行周期性作业。一键表结构导入您可以使用DataStudio一键表结构同步功能批量创建Hologres外部表。一键表数据同步您可以使用DataStudio导入MaxCompute数据至Hologres并可以提交调度周期性作业。二、Hologres SQLHologres SQL是基于SQL命令语句的编辑器支持您在DataStudio中通过SQL命令语句进行Hologres开发。操作步骤新建Hologres SQL节点在数据开发页面鼠标悬停至顶部菜单栏的新建选择新建节点HologresHologres SQL。在新建节点对话框中选择引擎实例、输入名称和选择路径。单击确认完成新建Hologres SQL节点。Hologres开发打开新建的Hologres SQL节点输入如下标准的PostgreSQL语句示例进行Hologres开发单击图标。如下命令语句新建一个名称为supplier\_holo的表并给表中插入数据最后查询表中数据。BEGIN;CREATETABLEsupplier_holo(s_suppkeybigintNOTNULL,s_nametextNOTNULL,s_addresstextNOTNULL,s_nationkeybigintNOTNULL,s_phonetextNOTNULL,s_acctbalbigintNOTNULL,s_commenttextNOTNULL,PRIMARYKEY(s_suppkey));CALLSET_TABLE_PROPERTY(supplier_holo,bitmap_columns,s_suppkey,s_nationkey,s_acctbal,s_name);CALLSET_TABLE_PROPERTY(supplier_holo,dictionary_encoding_columns,s_name,s_address);CALLSET_TABLE_PROPERTY(supplier_holo,time_to_live_in_seconds,31536000);COMMIT;INSERTINTOsupplier_holoVALUES(1,Supplier01,New York,17,27-918-335-1736,575594,careful),(6,Supplier06,London,14,24-696-997-4969,136579,final accounts ),(10,Supplier03,Beijing,24,34-852-489-8585,389191,ing waters),(18,Supplier04,Paris,16,26-729-551-1115,704082,accounts snooze),(39,Supplier05,Shanghai,8,18-851-856-5633 611565,88990,special packages),(48,Supplier06,Canada,14,24-722-551-9498,563062,xpress instructions affix);SELECT*FROMsupplier_holo;三、一键表结构导入DataStudio支持一键MaxCompute表结构同步功能可以使用可视化方式批量创建外部表。操作步骤新建一键MaxCompute表结构同步节点。进入数据开发页面。登录DataWorks控制台切换至目标地域后单击左侧导航栏的数据开发与运维数据开发在下拉框中选择对应工作空间后单击进入数据开发。在DataStudio界面的左侧导航栏单击进入数据开发页面。单击顶部菜单栏的新建选择新建节点Hologres一键MaxCompute表结构同步。在新建节点对话框中选择引擎实例和路径并输入名称单击确认。在编辑节点页面配置各项参数。参数说明目标连接Hologres的实例名称。目标库Hologres实例下的数据库名称。模式Hologres数据库下的Schema名称。默认为public若您有新建Schema可以选择您新建的Schema。类型目前仅支持对接MaxCompute。服务器列表服务器名称。Hologres实例创建成功后会自动创建名称为odps_server的服务器, 可以直接调用相关原理请参见postgres_fdw。来源项目MaxCompute的项目名称。选择要直接加速的表您可以根据实际业务情况选择整库加速或者部分加速。表名冲突创建表时表名称冲突策略包含如下策略 - 忽略继续创建其他表。 - 更新修改同名表。 - 报错不再重复创建。数据类型不支持创建表时数据类型不支持策略包含如下策略 - 报错导入失败。 - 忽略跳过不支持字段。在Hologres一键表结构导入节点的编辑页面单击图标保存配置信息。在Hologres一键表结构导入节点的编辑页面单击图标批量创建外部表结构。查看批量创建的外部表。在左侧导航栏单击图标进入表管理页面。双击需要查看的外部表显示表编辑页面。四、一键表数据同步DataStudio支持一键MaxCompute数据同步功能您可以使用可视化方式导入MaxCompute表数据并进行查询。该方式比创建外部表直接查询数据的性能更好。操作步骤新建一键MaxCompute数据同步节点。进入数据开发页面。登录DataWorks控制台切换至目标地域后单击左侧导航栏的数据开发与运维数据开发在下拉框中选择对应工作空间后单击进入数据开发。在DataStudio界面的左侧导航栏单击进入数据开发页面。单击顶部菜单栏的新建选择新建节点Hologres一键MaxCompute数据同步。在新建节点对话框中选择引擎实例和路径并输入名称单击确认。在编辑节点页面配置各项参数。参数配置项说明MaxCompute源表选择目标连接已绑定的Hologres数据源名称。目标库Hologres实例下的数据库名称。外部表来源- 已有外部表 已经提前在Hologres中创建映射MaxCompute数据的外部表。 - 新建外部表 表示无相应的外部表需要同步时新建。外部SchemaHologres中已创建的MaxCompute外部表所在的Schema。 当外部表来源选择已有外部表时需要配置此参数。外部表表名字Hologres中已创建的MaxCompute外部表名称。 当外部表来源选择已有外部表时需要配置此参数。外部服务器Hologres实例创建成功后会自动创建名称为odps_server的服务器, 可以直接调用相关原理请参见postgres_fdw。 当外部表来源选择新建外部表时需要配置此参数。MaxCompute项目MaxCompute的项目名称。 当外部表来源选择新建外部表时需要配置此参数。MaxCompute表名同步数据的MaxCompute表名称。 当外部表来源选择新建外部表时需要配置此参数。目标表设置目标Schema当前Hologres数据库下的Schema名称。目标表名需要导入数据的Hologres内部表名称。若表名称已存在执行后原表和数据将被删除重建。目标表描述自定义添加需要导入数据的Hologres内部表的描述。导入GUC参数设置GUC参数导入MaxCompute数据前需要设置的GUC参数支持的GUC参数请见GUC参数。其余SQL均不支持。同步设置同步字段选择需要同步的MaxCompute表字段可以选择全部字段也可以选择部分字段。分区配置选择需要同步的分区字段。当前Hologres仅支持一级分区。 MaxCompute的多级分区在Hologres中设定为一级分区其余分区自动映射为Hologres的普通字段。索引配置为目标表构建索引。索引的创建请参见建表概述。SQL ScriptSQL Script自动解析出当前运行的SQL方便参照。在编辑节点页面单击图标保存配置信息。在编辑节点页面单击图标运行同步任务导入MaxCompute表数据。查看同步的MaxCompute表数据。在左侧导航栏单击图标进入表管理页面。双击需要查看的Hologres内部表显示表编辑页面。说明若表管理页面未显示目标表您需要在DataWorks数据地图中进行Hologres元数据采集详情请参见数据地图。可选周期性调度。在节点的编辑页面单击节点编辑区域右侧的调度配置配置节点的调度属性详情请参见配置基础属性。在节点的编辑页面单击工具栏中的图标保存节点。单击工具栏中的图标提交节点。在提交新版本对话框中输入变更描述单击确认。五、通过DataWorks周期性导入MaxComputeDataWorks调度任务可以按照需求设置数据传输的时间和频率并确保数据在传输和导入过程中的完整性和准确性。将MaxCompute分区表数据通过DataWorks导入Hologres分区表实现两个平台的优势相互结合从而提高数据处理效率和可靠性。1、数据准备本文以MaxCompute公共数据集public_data中的分区表dwd_product_movie_basic_info为例。dwd_product_movie_basic_info表结构示例如下。--MaxCompute分区表DDLCREATETABLEIFNOTEXISTSpublic_data.dwd_product_movie_basic_info(movie_name STRINGCOMMENT电影名称,director STRINGCOMMENT导演,scriptwriter STRINGCOMMENT编剧,area STRINGCOMMENT制片地区/国家,actors STRINGCOMMENT主演,typeSTRINGCOMMENT类型,movie_length STRINGCOMMENT电影长度,movie_date STRINGCOMMENT上映日期,movie_language STRINGCOMMENT语言,imdb_url STRINGCOMMENTimdb号)PARTITIONEDBY(ds STRING)STOREDASALIORC;2、操作步骤MaxCompute数据准备。登录DataWorks控制台切换至目标地域后单击左侧导航栏的数据分析与服务数据分析单击进入数据分析页面单击左侧导航栏的图标进入SQL查询页面。在SQL查询页面输入如下SQL语句用于查看分区表20170112分区的数据单击运行SQL语句如下SELECT*FROMpublic_data.dwd_product_movie_basic_infoWHEREds20170112;Hologres中新建外部表。新建一张Hologres外部表用于映射MaxCompute源头表数据。外表的字段顺序和字段类型需要和MaxCompute表的一一对应。登录HoloWeb控制台SQL编辑器页面。单击SQL编辑器页签下方的图标进入临时Query查询窗口在查询窗口工具栏选择已创建并登录的Hologres实例名和数据库。请您在临时Query查询的编辑框输入如下语句单击运行。如下语句使用IMPORT FOREIGN SCHEMA命令创建名称为dwd_product_movie_basic_info的Hologres外部表。IMPORTFOREIGNSCHEMApublic_dataLIMITTO(dwd_product_movie_basic_info)FROMSERVER odps_serverINTOpublicOPTIONS(if_table_existupdate);Hologres中新建真实存储表内部表。在Hologres中新建一张内部表用于接收并存储数据。在HoloWeb开发页面单击新增SQL窗口。在新增的临时Query查询页面选择已创建的实例名和数据库后请您在SQL查询的编辑框输入如下语句单击运行。本次示例是将MaxCompute分区表导入Hologres因此需要在Hologres中创建的内部表为分区表。BEGIN;CREATETABLEpublic.holo_dwd_product_movie_basic_info(movie_nameTEXT,directorTEXT,scriptwriterTEXT,areaTEXT,actorsTEXT,typeTEXT,movie_lengthTEXT,movie_dateTEXT,movie_languageTEXT,imdb_urlTEXT,dsTEXT)PARTITIONBYLIST(ds);CALLSET_TABLE_PROPERTY(public.holo_dwd_product_movie_basic_info,orientation,column);COMMENTONCOLUMNpublic.holo_dwd_product_movie_basic_info.movie_nameIS电影名称;COMMENTONCOLUMNpublic.holo_dwd_product_movie_basic_info.directorIS导演;COMMENTONCOLUMNpublic.holo_dwd_product_movie_basic_info.scriptwriterIS编剧;COMMENTONCOLUMNpublic.holo_dwd_product_movie_basic_info.areaIS制片地区/国家;COMMENTONCOLUMNpublic.holo_dwd_product_movie_basic_info.actorsIS主演;COMMENTONCOLUMNpublic.holo_dwd_product_movie_basic_info.typeIS类型;COMMENTONCOLUMNpublic.holo_dwd_product_movie_basic_info.movie_lengthIS电影长度;COMMENTONCOLUMNpublic.holo_dwd_product_movie_basic_info.movie_dateIS上映日期;COMMENTONCOLUMNpublic.holo_dwd_product_movie_basic_info.movie_languageIS语言;COMMENTONCOLUMNpublic.holo_dwd_product_movie_basic_info.imdb_urlISimdb号;COMMIT;新建分区子表数据开发。此步骤是一个Hologres SQL模块用于分区表跑调度。登录DataWorks控制台进入数据开发页面创建Hologres SQL节点详情请参见Hologres SQL节点。在节点的编辑页面输入如下语句。在Hologres中不支持直接将分区数据直接写入分区父表因此需要在Hologres中创建对应MaxCompute分区表中分区键值的分区子表然后将分区数据导入对应的分区子表。分区键值由参数${bizdate}控制在调度系统中自动赋值完成周期性调度调度参数的更多内容请参见调度参数支持的格式。说明导入的分区数据必须和分区键值本文示例使用的是ds保持一致否则会出现报错。导入分区数据的逻辑场景比较多下面有两个场景供参考请您根据实际业务逻辑两者选其中一个。场景一导入新的分区数据。--创建临时分区子表BEGIN;CREATETABLEIFNOTEXISTSpublic.tmp_holo_dwd_product_movie_basic_info_${bizdate}(movie_nameTEXT,directorTEXT,scriptwriterTEXT,areaTEXT,actorsTEXT,typeTEXT,movie_lengthTEXT,movie_dateTEXT,movie_languageTEXT,imdb_urlTEXT,dsTEXT);COMMIT;--更新外表数据IMPORTFOREIGNSCHEMApublic_dataLIMITTO(dwd_product_movie_basic_info)FROMSERVER odps_serverINTOpublicOPTIONS(if_table_existupdate);--等待30s再导入Hologres以防Hologres meta信息更新缓存慢导致的数据不一致而同步不成功SELECTpg_sleep(30);--将MaxCompute数据导入临时分区子表INSERTINTOpublic.tmp_holo_dwd_product_movie_basic_info_${bizdate}SELECTmovie_name,director,scriptwriter,area,actors,type,movie_length,movie_date,movie_language,imdb_url,dsFROMpublic.dwd_product_movie_basic_infoWHEREds${bizdate};--导入新的分区数据BEGIN;ALTERTABLEtmp_holo_dwd_product_movie_basic_info_${bizdate}RENAMETOholo_dwd_product_movie_basic_info_${bizdate};--将临时分区子表绑定在分区父表上ALTERTABLEholo_dwd_product_movie_basic_info ATTACHPARTITIONholo_dwd_product_movie_basic_info_${bizdate}FORVALUESIN(${bizdate});COMMIT;场景二重新对历史分区数据刷新。--创建临时分区子表BEGIN;CREATETABLEIFNOTEXISTSpublic.tmp_holo_dwd_product_movie_basic_info_${bizdate}(movie_nameTEXT,directorTEXT,scriptwriterTEXT,areaTEXT,actorsTEXT,typeTEXT,movie_lengthTEXT,movie_dateTEXT,movie_languageTEXT,imdb_urlTEXT,dsTEXT);COMMIT;--更新外表数据IMPORTFOREIGNSCHEMApublic_dataLIMITTO(dwd_product_movie_basic_info)FROMSERVER odps_serverINTOpublicOPTIONS(if_table_existupdate);--等待30s再导入Hologres以防Hologres meta信息更新缓存慢导致的数据不一致而同步不成功SELECTpg_sleep(30);--将MaxCompute数据导入临时分区子表INSERTINTOpublic.tmp_holo_dwd_product_movie_basic_info_${bizdate}SELECTmovie_name,director,scriptwriter,area,actors,type,movie_length,movie_date,movie_language,imdb_url,dsFROMpublic.dwd_product_movie_basic_infoWHEREds${bizdate};--重新对历史分区数据刷新BEGIN;ALTERTABLEIFEXISTSholo_dwd_product_movie_basic_info DETACHPARTITIONholo_dwd_product_movie_basic_info_${bizdate};DROPTABLEIFEXISTSholo_dwd_product_movie_basic_info_${bizdate};ALTERTABLEtmp_holo_dwd_product_movie_basic_info_${bizdate}RENAMETOholo_dwd_product_movie_basic_info_${bizdate};--将分区子表绑定在分区父表上ALTERTABLEholo_dwd_product_movie_basic_info ATTACHPARTITIONholo_dwd_product_movie_basic_info_${bizdate}FORVALUESIN(${bizdate});COMMIT;调度配置。在Hologres SQL编辑页面单击节点编辑区域右侧的调度配置配置节点的调度属性。说明需要更改的参数如下未提及参数请保持默认值。基础属性参数值参数bizdate${yyyymmdd}时间属性在时间属性区域设置调度类型为正常调度生效日期保持默认1970-01-01至9999-01-01调度周期选择日超时时间选择系统默认依赖上一周期不勾选。参数值生成实例方式发布后即时生成重跑属性运行成功后不可重跑运行失败后可以重跑定时调度时间00:05调度依赖调度依赖为root节点即可也可以根据业务逻辑选择已有的父节点。请先将代码解析选择为是然后单击代码解析会自动解析出root节点最后再将代码解析选择为否。发布调度。在Hologres SQL编辑页面单击工具栏中的图标保存节点。单击工具栏中的图标提交节点。在提交新版本对话框中输入变更描述。单击确认。运维中心发布。在Hologres SQL编辑页面单击工具栏中最右侧的运维。进入运维中心页面单击左侧菜单栏周期任务运维周期任务。在周期任务页面右键单击节点选择补数据当前节点。选择左侧菜单栏运维助手补数据查看正在运行的任务以及任务状态。查看数据。任务执行成功之后将会在Hologres中自动创建对应分区数据的分区子表。进入数据开发页面创建Hologres SQL节点。详情请参见Hologres SQL节点。在节点的编辑页面输入如下语句进行数据查询。查看分区子表数据。SELECT*FROMholo_dwd_product_movie_basic_info_20170112;查看分区父表总数据。SELECTCOUNT(*)FROMholo_dwd_product_movie_basic_info;