华为云用户手册
-
创建 IAM 用户并加入用户组 在IAM服务控制台中,左侧导航窗格中,选择“用户”,单击右上方的“创建用户”。 图13 创建用户 在“创建用户”页面按照下图配置“用户信息”,完成配置后单击页面右下角的“下一步”。 用户信息:用户名填写为 DataArts Studio -DQC。 访问方式:选择“管理控制台访问”和“编程访问”。 仅当创建IAM用户时的访问方式勾选“编程访问”后,此IAM用户才能通过认证鉴权,从而使用API、SDK等方式访问DataArts Studio。 凭证类型:勾选访问密钥和密码,推荐为用户自定义初始密码。 登录保护:根据需求选择,一般无需开启。 图14 配置用户信息 选择将用户加入到DQC用户组,单击页面右下角的创建用户。 图15 创建用户按钮 创建完成可返回用户列表查看。 图16 创建成功
-
自定义工作空间角色 使用华为账号登录DataArts Studio管理控制台的首页,单击“角色管理”。 企业模式是否预置部署者角色以及创建自定义角色时的参数,与企业模式是否开启有关。本文以未开启企业模式为例进行说明。 图17 新建自定义角色 在角色管理页面,单击“新建”,弹出“创建自定义角色”对话框。 角色名称:标识自定义角色的唯一标识,此处填写为“Developer_DQC”。 角色描述:补充对该角色的相关说明,此处填写为“基于开发者角色,仅保留数据质量权限”。 角色类型:未开启企业模式,选择任一自定义角色即可。 复用预置角色:选择“开发者”,然后去勾选其他组件的新增、删除、操作、编辑权限,仅为该角色保留数据质量组件的权限和其他组件的查看权限。 图18 创建自定义角色 配置完成后,单击“确定”即可新增自定义角色。
-
添加工作空间成员并配置角色 使用华为账号登录DataArts Studio管理控制台的首页,单击“空间管理”。 图19 空间管理 选择需要加入的工作空间,单击“编辑”。 图20 编辑工作空间 在空间信息界面,单击“添加”。 图21 添加成员 将新建的IAM用户加入工作空间,单击“确定”。 用户类型:选择“按用户添加”。 成员账号:选择创建IAM用户并加入用户组章节中新建的IAM用户。 设置角色:选择自定义工作空间角色章节中新建的自定义角色。 图22 添加成员 加入到工作空间后,该用户即可拥有DataArts Studio数据质量组件的操作权限,其余组件仅有查看权限但无法编辑。
-
实践场景及目标 某数据运营工程师专职负责数据质量监控相关工作,仅需要服务数据质量组件的操作权限。 图1 权限体系 服务的权限体系如图1所示。如果项目管理员直接赋予该数据运营工程师IAM账号“DAYU User系统角色+工作空间开发者角色”权限,则会出现如下非必需权限过大的风险: 依赖服务权限过大:服务作为平台型服务,DAYU User系统角色预置了依赖服务(如 MRS 、DWS等相关服务)的管理员权限。当为数据运营工程师IAM账号授予DAYU User系统角色后,会导致其拥有依赖服务的管理员权限。 服务其他组件操作权限不受控制:工作空间开发者角色默认具备该工作空间内所有组件的操作权限。当为数据运营工程师IAM账号授权工作空间开发者角色后,会导致其拥有数据质量组件之外的其他组件操作权限。 为了解决此问题,项目管理员可以按照如下解决方案进行权限最小化配置,这样既能满足实际业务使用,也避免了权限过大的风险。 为数据运营工程师IAM账号授予DAYU User系统角色权限,然后删除IAM账号中的依赖服务权限,再赋予依赖服务的最小权限合集。 在服务内,创建一个仅保留数据质量组件操作权限的自定义角色“Developer_DQC”,然后将数据运营工程师IAM账号添加为工作空间成员并赋予此角色。
-
操作流程 创建用户组并授予系统角色 User:创建数据运营工程师IAM账号所在的用户组,并授予 User权限。 去除用户组依赖服务权限并配置最小权限合集:为用户组去除默认的依赖服务管理员权限,然后配置最小权限。 创建IAM用户并加入用户组:为数据运营工程师创建IAM账号,并加入到用户组中。 自定义工作空间角色:在角色管理页面,新建自定义角色,仅授权某一组件权限,本案例中以数据质量为例。 添加工作空间成员并配置角色:将新创建的IAM用户加入到工作空间并配置为新建的自定义角色。 用户登录并验证权限:使用新创建的用户登录控制台,验证权限配置是否符合预期。 图2 最小化授权操作流程
-
创建并执行数据迁移作业 登录DataArts Studio控制台,单击相应工作空间后的“数据集成”。 在“集群管理”页面,单击所创建集群操作列“作业管理”,进入“作业管理”页面。 在表/文件迁移页签中,单击新建作业,创建数据迁移作业。 配置DWS源端作业参数、MRS Hive目的端作业参数,参数说明请参见配置DWS源端参数、配置MRS Hive目的端作业参数。 图4 作业配置 配置作业字段映射及任务配置,单击“保存并运行”,执行 CDM 作业。 在“表/文件迁移”作业列表中,查看作业执行情况。 图5 查看作业运行情况
-
创建数据迁移连接 登录DataArts Studio控制台,单击相应工作空间后的“数据集成”。 在集群管理页面,单击所创建集群操作列“作业管理”,进入“作业管理”页面。 图1 作业管理页面 在连接管理页签中,单击“新建连接”,创建DWS数据连接,参数说明请参见配置DWS连接。 图2 配置DWS连接 同上述步骤,创建MRS Hive数据连接,参数说明请参见配置MRS Hive连接。 图3 配置MRS Hive连接
-
创建CDM迁移作业 登录控制台,选择实例,单击“进入控制台”,单击相应工作空间后的“数据集成”。 在集群管理页面,单击集群操作列“作业管理”,进入“作业管理”页面,如图1所示。 图1 集群管理 在“连接管理”页签中,单击“新建连接”,分别创建Oracle数据连接和MRS Hive数据连接,详情请参见新建Oracle数据连接和新建MRS Hive数据连接。 在“表/文件迁移”页签中,单击“新建作业”,创建数据迁移作业。 配置Oracle源端参数、MRS hive目的端参数,并配置传递参数,参数形式为 ${varName},本示例参数为${cur_date},如图2所示。 图2 配置作业 不能在CDM迁移作业中配置“作业失败重试”参数,如有需要请在数据开发中的CDM节点配置“失败重试”参数。
-
新空间导入数据 请您登录控制台首页,选择并进入新工作空间的“数据质量”模块,然后执行如下操作依次导入规则模板、导入质量作业、导入对账作业。 导入规则模板 在数据质量主界面,单击左侧导航上的“规则模板”,进入规则模板列表。 在规则模板列表,单击“导入”。 图10 批量导入规则模板 在弹出的导入窗口中,选择从旧空间导出的规则模板文件,然后选择目录的映射路径,“重名处理策略”默认选择“终止”,最后单击“导入”。 图11 规则模板导入 在导入记录中,可查看导入状态,显示为成功后即成功导入。 图12 查看规则模板导入结果 导入质量作业 单击左侧导航上的“质量作业”,进入质量作业列表。 在质量作业列表,单击“导入”。 图13 批量导入质量作业 在弹出的导入窗口中,选择从旧空间导出的质量作业文件,然后选择数据连接、集群和目录等的映射路径,“重名处理策略”默认选择“终止”,最后单击“导入”。 图14 质量作业导入 在导入记录中,可查看导入状态,显示为成功后即成功导入。 图15 查看质量作业导入结果 导入对账作业 单击左侧导航上的“对账作业”,进入对账作业列表。 在对账作业列表,单击“导入”。 图16 批量导入对账作业 在弹出的导入窗口中,选择从旧空间导出的对账作业文件,然后选择数据连接、集群和目录等的映射路径,“重名处理策略”默认选择“终止”,最后单击“导入”。 图17 对账作业导入 在导入记录中,可查看导入状态,显示为成功后即成功导入。 图18 查看对账作业导入结果
-
旧空间导出数据 请您登录控制台首页,选择并进入旧工作空间的“数据质量”模块,然后执行如下操作依次导出规则模板、导出质量作业、导出对账作业。 导出规则模板 在数据质量主界面,单击左侧导航上的“规则模板”,进入规则模板列表。 在规则模板列表,选择自定义的规则模板,然后单击“导出”。 图1 批量导出规则模板 在弹出的导出窗口中,确认选择无误后单击“导出”,导出规则模板。 图2 规则模板导出确认 导出成功后,在导出记录中单击“下载”,即可通过浏览器下载地址,获取到导出的xlsx文件。 图3 获取规则模板导出结果 导出质量作业 单击左侧导航上的“质量作业”,进入质量作业列表。 在质量作业列表,选择需要迁移的质量作业,然后单击“导出”。 图4 批量导出质量作业 在弹出的导出窗口中,确认选择无误后单击“导出”,导出质量作业。 图5 质量作业导出确认 导出成功后,在导出记录中单击“下载”,即可通过浏览器下载地址,获取到导出的xlsx文件。 图6 获取质量作业导出结果 导出对账作业 单击左侧导航上的“对账作业”,进入对账作业列表。 在对账作业列表,选择需要迁移的对账作业,然后单击“导出”。 图7 批量导出对账作业 在弹出的导出窗口中,确认选择无误后单击“导出”,导出对账作业。 图8 对账作业导出确认 导出成功后,在导出记录中单击“下载”,即可通过浏览器下载地址,获取到导出的xlsx文件。 图9 获取对账作业导出结果
-
约束与限制 已完成管理中心数据搬迁。 业务指标监控中的指标、规则、业务场景等数据均不支持导入导出,如有涉及,请您进行手动配置同步。 系统支持将自定义的规则模板批量导出,一次最多可导出200个规则模板。 系统支持将自定义的规则模板批量导入,一次最大可导入4MB数据的文件。 系统支持批量导出质量作业,一次最多可导出200个质量作业。导出作业时,导出的单元格内容最大长度支持65534个字符。 系统支持批量导入质量作业,一次最大可导入4MB数据的文件。导入作业时,导入的单元格内容最大长度支持65534个字符。 系统支持批量导出对账作业,一次最多可导出200个对账作业。导出作业时,导出的单元格内容最大长度支持65534个字符。 系统支持批量导入对账作业,一次最大可导入4M数据的文件。导入作业时,导出的单元格内容最大长度支持65534个字符。
-
新空间导入数据 请您登录控制台首页,选择并进入新工作空间的“数据开发”模块,然后执行如下操作依次导入资源、导入环境变量、导入脚本、导入作业。 导入资源 在数据开发主界面,单击左侧导航上的“资源管理”,进入资源管理页面。 单击资源目录中的,选择“导入资源”。 图8 选择导入资源 在弹出的导入资源窗口中,“文件位置”选择为“本地”,选择从旧空间导出的资源文件,“重名处理策略”默认选择“覆盖”,单击下一步。 图9 导入资源 资源开始导入,导入成功后系统会显示导入的资源名。 图10 导入资源成功 导入环境变量 单击左侧导航上的“配置”,进入环境变量页面。 单击环境变量配置下的“导入”,导入环境变量。 图11 选择导入环境变量 在弹出的导入环境变量窗口中,“文件位置”选择为“本地”,选择从旧空间导出的环境变量文件,“重名处理策略”默认选择“覆盖”,单击下一步。 图12 导入环境变量 环境变量开始导入,导入前系统会提示是否要修改变量值,确定后环境变量即可导入成功。 图13 导入结果确认 导入脚本 单击左侧导航上的“脚本开发”,进入脚本目录。 单击脚本目录中的,选择“导入脚本”。 图14 选择导入脚本 在弹出的导入脚本窗口中,“文件位置”选择为“本地”,选择从旧空间导出的脚本文件,“重名处理策略”默认选择“覆盖”,单击下一步。 图15 导入脚本 脚本开始导入,导入成功后系统会显示导入的脚本名。 图16 导入脚本成功 导入作业 单击脚本目录树上方的,切换到作业界面。 单击作业目录中的,选择“导入作业”。 图17 选择导入作业 在弹出的导入作业窗口中,“文件位置”选择为“本地”,选择从旧空间导出的作业文件,单击下一步。 图18 导入作业 作业开始导入,导入成功后系统会显示导入的作业名。 图19 导入作业成功
-
新空间导入作业和连接 请您登录控制台首页,选择并进入新工作空间的“数据集成”模块,然后执行如下操作进行批量导入。 在CDM主界面,单击左侧导航上的“集群管理”,单击集群“操作”列的“作业管理”,进入到“表/文件迁移”界面。 单击作业列表上方的“导入”按钮,准备导入JSON文件。 图3 批量导入 在弹出的窗口中,选择导出作业获取的JSON文件,上传JSON文件。 图4 选择JSON文件 JSON文件上传成功后,单击“设置密码”,配置数据连接的密码或SK。 图5 进入设置密码 在设置密码弹窗中,依次输入各数据连接的密码或SK,完成后单击确认,回到导入作业界面。 图6 设置密码 在导入作业界面,单击确认,开始导入。 图7 开始导入 导入完成后,界面会显示导入情况。如果存在导入失败的情况,请您根据系统报错原因提示,调整后重新导入。
-
旧空间导出作业和连接 请您登录控制台首页,选择并进入旧工作空间的“数据集成”模块,然后执行如下操作进行批量导出。 在CDM主界面,单击左侧导航上的“集群管理”,单击集群“操作”列的“作业管理”,进入到“表/文件迁移”界面。 单击作业列表上方的“导出”按钮,准备导出连接和作业。 图1 批量导出 在弹出的窗口中,选择“全部作业和连接”,单击“确认”,导出所有作业和连接。 图2 全部导出 导出成功后,通过浏览器下载地址,获取到导出的JSON文件。
-
旧空间导出资源 请您登录控制台首页,选择并进入旧工作空间的“管理中心”模块,然后执行如下操作进行资源导出。 参考访问DataArts Studio实例控制台,登录DataArts Studio管理控制台。 在DataArts Studio控制台首页,选择对应工作空间的“管理中心”模块,进入管理中心页面。 在管理中心页面,单击“资源迁移”,进入资源迁移页面。 图1 资源迁移 单击“新建导出”,配置文件的OBS存储位置和文件名称。 图2 选择导出文件 单击“下一步”,勾选导出的模块。 图3 勾选导出的模块 单击“下一步”,等待导出完成,资源包导出到所设置的OBS存储位置。 图4 导出完成 导出资源耗时1分钟仍未显示结果则表示导出失败,请重试。如果仍然无法导出,请联系客服或技术支持人员协助解决。 导出完成后可在资源迁移任务列表中,单击对应任务的“下载”按钮,本地获取导出的资源包。 图5 下载导出结果
-
新空间导入资源 请您登录控制台首页,选择并进入新工作空间的“管理中心”模块,然后执行如下操作进行资源导入。 在管理中心页面,单击“资源迁移”,进入资源迁移页面。 图6 资源迁移 单击“新建导入”,选择导入方式后,配置待导入资源的OBS或本地路径。待导入的资源应为通过导出获取的zip文件。 图7 配置待导入的资源存储路径 单击“新建导入”,上传待导入资源。待导入的资源应为通过导出获取的zip文件 单击“下一步”,勾选导入的资源类型。 图8 勾选导入的资源类型 如果选择导入数据源,则单击“下一步”需要配置数据连接。 图9 配置数据连接 单击“下一步”,等待导入任务下发,导入任务成功下发后系统提示“导入开始”。 图10 导入开始 系统提示“导入开始”后,单击“确定”,可在资源迁移任务列表中查看导入结果。 其中存在子任务失败时,可单击红色子任务名,查看失败原因。 图11 查看导入结果
-
操作前准备 已创建新的工作空间,新建工作空间的用户需要具备DAYU Administrator或Tenant Administrator权限。 执行数据搬迁的用户,至少应具备新旧两个工作空间的开发者权限。 CDM集群和数据服务专享版集群在工作空间之间相互隔离,建议您在新空间提前准备好对应旧空间的集群。 搬迁依赖于OBS功能,请您提前规划OBS桶和文件夹目录。 DataArts Studio数据搬迁时,依赖各组件的备份或导入导出能力。您可以根据自己的数据需求,自由选择搬迁哪个组件的数据。 管理中心配置数据搬迁 数据集成配置数据搬迁 数据架构配置数据搬迁 数据开发配置数据搬迁 数据质量配置数据搬迁 数据目录配置数据搬迁 数据安全配置数据搬迁 数据服务配置数据搬迁
-
开发并调度Import GES作业 假设MySQL中的原始数据表是每日更新的,我们希望每天都能将基于原始数据的最新图数据更新到GES中,则需要使用数据开发按如下步骤编排作业,并定期调度。 在DataArts Studio控制台首页,选择对应工作空间的“数据开发”模块,进入数据开发页面。 创建一个数据开发批处理作业,作业名称可以命名为“import_ges”。 图2 新建作业 在作业开发页面,拖动1个Dummy节点、8个CDM Job节点、和2个Import GES节点到画布中,选中连线图标并拖动,编排图3所示的作业。 其中Dummy节点不执行任何操作,只作为起始点的标识。CDM Job节点用于调用在创建数据集成作业中创建的数据集成作业。Import GES节点用于将图数据导入GES。 图3 编排作业 分别配置作业中的8个CDM Job节点。调用已创建的数据集成作业,将原始数据标准化为GES点/边数据集,并同步到OBS和MRS Hive中。 图4 配置CDM节点 CDM节点说明: vertex_user_rds2hive(CDM Job节点):在节点属性中,选择创建数据集成作业中的CDM集群,并关联CDM作业“vertex_user_rds2hive”。 vertex_user_rds2obs(CDM Job节点):在节点属性中,选择创建数据集成作业中的CDM集群,并关联CDM作业“vertex_user_rds2obs”。 edge_friends_rds2hive(CDM Job节点):在节点属性中,选择创建数据集成作业中的CDM集群,并关联CDM作业“edge_friends_rds2hive”。 edge_friends_rds2obs(CDM Job节点):在节点属性中,选择创建数据集成作业中的CDM集群,并关联CDM作业“edge_friends_rds2obs”。 vertex_movie_rds2hive(CDM Job节点):在节点属性中,选择创建数据集成作业中的CDM集群,并关联CDM作业“vertex_movie_rds2hive”。 vertex_movie_rds2obs(CDM Job节点):在节点属性中,选择创建数据集成作业中的CDM集群,并关联CDM作业“vertex_movie_rds2obs”。 edge_rate_rds2hive(CDM Job节点):在节点属性中,选择创建数据集成作业中的CDM集群,并关联CDM作业“edge_rate_rds2hive”。 edge_rate_rds2obs(CDM Job节点):在节点属性中,选择创建数据集成作业中的CDM集群,并关联CDM作业“edge_rate_rds2obs”。 分别配置作业中的2个Import GES节点。由于1个Import GES节点只能选择一张点表和一张边表,并生成对应的元数据,因此本示例中使用2个Import GES节点依次进行导入。 Import GES节点说明: Import_GES_user-friend:在节点属性中,选择图名称后,边数据集和点数据集分别填写为“edge_friends”边表和“vertex_user”点表。另外,应配置为不允许重复边,否则定期调度后将产生大量重复边。 注意,“元数据来源”需要选择为“新建元数据”,然后单击“元数据”参数后的生成按钮,弹出新建元数据窗口,如图6所示。在新建元数据窗口内,分别选择MRS中的“edge_friends”边表和“vertex_user”点表,输出目录可以设置为OBS点表和边表所在目录,然后单击生成,系统会自动在“元数据”参数处回填已生成的元数据Schema所在的OBS目录。 Import_GES_movie-rate:在节点属性中,选择图名称后,边数据集和点数据集分别填写为“edge_rate”边表和“vertex_movie”点表。另外,应配置为不允许重复边,否则定期调度后将产生大量重复边。 注意,“元数据来源”需要选择为“新建元数据”,然后单击“元数据”参数后的生成按钮,弹出新建元数据窗口,如图6所示。在新建元数据窗口内,分别选择MRS中的“edge_rate”边表和“vertex_movie”点表,输出目录可以设置为OBS点表和边表所在目录,然后单击生成,系统会自动在“元数据”参数处回填已生成的元数据Schema所在的OBS目录。 图5 配置Import GES节点 图6 新建元数据 作业编排完成后,单击,测试运行作业。 图7 测试运行作业 如果作业运行正常,单击“调度配置”,配置作业的调度策略。 图8 调度配置 说明: 2023/04/01 00:00开始,每天00点00分执行一次作业。 依赖属性:可以配置为依赖其他作业运行,本例不涉及,无需配置。 跨周期依赖:可以选择配置为依赖上一周期或者不依赖,此处配置为不依赖即可。 最后保存并提交版本(单击),执行调度作业(单击)。实现作业每天自动运行,每日数据将自动导入到GES图中。 您如果需要及时了解作业的执行结果是成功还是失败,可以通过数据开发的运维调度界面进行查看,如图9所示。 图9 查看作业执行情况
-
新建MySQL到MRS Hive迁移作业 正式业务流程中,需要将MySQL中的原始样例数据需要导入MRS Hive中,并标准化为点数据集和边数据集。 在DataArts Studio数据集成控制台,进入“集群管理”页面,在集群列表中找到所需要的集群,单击“作业管理”。 在“作业管理”页面,单击“表/文件迁移”,再单击“新建作业”。 图21 表/文件迁移 按照如下步骤将MySQL中的4张原始数据表,依次迁移到MRS Hive中。 配置作业vertex_user_rds2hive。 源端的“表名”选择在新建OBS到MySQL迁移作业中迁移到MySQL的vertex_user,目的端的“表名”选择在创建MRS Hive标准数据表中创建的vertex_user表。其他参数配置如图所示,无需配置高级属性,然后单击“下一步”。 图22 vertex_user_rds2hive作业基础配置 在字段映射中,根据GES图数据的要求,此处需要新增字段label,作为图文件的标签。 vertex_user:label取值为user,并将此字段调整至第2列。 vertex_movie:label取值为movie,并将此字段调整至第2列。 edge_friends:label取值为friends,并将此字段调整至第3列。 edge_rate:label取值为rate,并将此字段调整至第3列。 将原始数据结构根据GES图导入的要求标准化。则点表vertex_user和vertex_movie需要在第二列补充标签label,边表edge_rate和edge_friends需要在第三列补充标签label。 点数据集和边数据集应符合GES图数据格式要求。图数据格式要求简要介绍如下,详情可参见一般图数据格式。 点数据集罗列了各个点的数据信息。一行为一个点的数据。格式如下所示,id是点数据的唯一标识。 id,label,property 1,property 2,property 3,… 边数据集罗列了各个边的数据信息,一行为一条边的数据。GES中图规格是以边的数量进行定义的,如一百万边。格式如下所示,id 1、id 2是一条边的两个端点的id。 id 1, id 2, label, property 1, property 2, … 图23 vertex_user_rds2hive新增字段映射 调整字段顺序,点文件中将label调整至第2列,边文件将label调整至第3列。调整完成后如图25所示,然后单击下一步。 图24 vertex_user_rds2hive调整字段顺序 图25 vertex_user_rds2hive字段映射 任务配置无需修改,直接保存并运行即可。 图26 任务配置 等待作业运行完成后,如果作业成功,则vertex_user表已成功迁移到MRS Hive中。 图27 vertex_user_rds2hive作业运行成功 参考2到4,完成vertex_movie_rds2hive、edge_friends_rds2hive和edge_rate_rds2hive作业的创建,将4张原始表从MySQL标准化到MRS Hive中。
-
新建MySQL到OBS迁移作业 正式业务流程中,需要将MySQL中的原始样例数据需要导入OBS中,并标准化为点数据集和边数据集。 在DataArts Studio数据集成控制台,进入“集群管理”页面,在集群列表中找到所需要的集群,单击“作业管理”。 在“作业管理”页面,单击“表/文件迁移”,再单击“新建作业”。 图13 表/文件迁移 按照如下步骤将MySQL中的4张原始数据表,依次迁移到OBS桶中。 配置作业vertex_user_rds2obs。 源端的“表名”选择在新建OBS到MySQL迁移作业中迁移到MySQL的vertex_user。目的端的“写入目录”注意选择非原始数据所在目录以避免文件覆盖,“文件格式”按照GES图导入格式要求设置为“ CS V格式”,由于表中有中文字符还需额外配置高级属性“编码类型”为“GBK”。 注意:目的端高级属性需要额外配置“自定义文件名”,取值为“${tableName}”。如果不配置,则迁移到OBS的CSV文件名会带上时间戳等额外字段,导致每次运行迁移作业获取的文件名不一致,无法每次迁移后自动导入GES图数据。 其他高级属性无需配置,单击“下一步”。 图14 vertex_user_rds2obs作业基础配置 图15 vertex_user_rds2obs作业高级配置 在字段映射中,根据GES图数据的要求,此处需要新增字段label,作为图文件的标签。 vertex_user:label取值为user,并将此字段调整至第2列。 vertex_movie:label取值为movie,并将此字段调整至第2列。 edge_friends:label取值为friends,并将此字段调整至第3列。 edge_rate:label取值为rate,并将此字段调整至第3列。 将原始数据结构根据GES图导入的要求标准化。则点表vertex_user和vertex_movie需要在第二列补充标签label,边表edge_rate和edge_friends需要在第三列补充标签label。 点数据集和边数据集应符合GES图数据格式要求。图数据格式要求简要介绍如下,详情可参见一般图数据格式。 点数据集罗列了各个点的数据信息。一行为一个点的数据。格式如下所示,id是点数据的唯一标识。 id,label,property 1,property 2,property 3,… 边数据集罗列了各个边的数据信息,一行为一条边的数据。GES中图规格是以边的数量进行定义的,如一百万边。格式如下所示,id 1、id 2是一条边的两个端点的id。 id 1, id 2, label, property 1, property 2, … 图16 vertex_user_rds2obs新增字段映射 调整字段顺序,点数据集将label调整至第2列,边数据集将label调整至第3列。调整完成后如图18所示,然后单击下一步。 图17 vertex_user_rds2obs调整字段顺序 图18 vertex_user_rds2obs字段映射 任务配置无需修改,直接保存并运行即可。 图19 任务配置 等待作业运行完成后,如果作业成功,则vertex_user.csv表已成功写入到OBS桶中。 图20 vertex_user_rds2obs作业运行成功 参考2到4,完成vertex_movie_rds2obs、edge_friends_rds2obs和edge_rate_rds2obs作业的创建,将4张原始表从MySQL标准化到OBS桶中。
-
新建OBS到MySQL迁移作业 为方便演示,需要将OBS中的CSV格式的样例数据导入到MySQL数据库中。 在DataArts Studio数据集成控制台,进入“集群管理”页面,在集群列表中找到所需要的集群,单击“作业管理”。 在“作业管理”页面,单击“表/文件迁移”,再单击“新建作业”。 图8 表/文件迁移 按照如下步骤将数据源准备中的4张原始数据表,依次从OBS迁移到MySQL数据库中。 配置作业vertex_user_obs2rds。 源端的“源目录或文件”选择在数据源准备中上传到OBS的vertex_user.csv,由于表中有中文字符还需额外配置高级属性“编码类型”为“GBK”。目的端的“表名”选择在创建MySQL原始数据表中创建的vertex_user表。然后单击“下一步”。 图9 vertex_user_obs2rds作业配置 在字段映射中,检查字段映射顺序是否正确。如果字段映射顺序正确,单击下一步即可。 图10 vertex_user_obs2rds字段映射 任务配置无需修改,直接保存并运行即可。 图11 任务配置 等待作业运行完成后,如果作业成功,则vertex_user表已成功迁移到MySQL数据库中。 图12 vertex_user_obs2rds作业运行成功 参考2到4,完成vertex_movie_obs2rds、edge_friends_obs2rds和edge_rate_obs2rds作业的创建,将4张原始表从OBS迁移到MySQL中。
-
创建数据表 本例中为了方便演示,我们需要通过数据集成将CSV格式的样例数据导入到MySQL数据库中,之后MySQL数据库即作为案例场景中的原始数据源端。因此在数据导入中,需要在MySQL数据库中预先创建原始数据表。 正式业务流程中,MySQL数据库源端数据需要导入OBS数据库作为点数据集和边数据集,这种到OBS的数据集成场景无需提前创建表。但MySQL数据库源端数据导入到MRS Hive时,需要在MRS Hive数据库中预先创建标准数据表。 因此,本例共涉及MySQL数据库创建原始数据表和在MRS Hive数据库中创建标准数据表。本例以执行SQL方式建表为例进行说明。 创建MySQL原始数据表。在MySQL中选择原始表所在的数据库后,执行如下SQL语句,按照数据源准备中的原始数据结构创建4个原始数据表。 DROP TABLE IF EXISTS `edge_friends`; CREATE TABLE `edge_friends` ( `user1` varchar(32) DEFAULT NULL, `user2` varchar(32) DEFAULT NULL ); DROP TABLE IF EXISTS `edge_rate`; CREATE TABLE `edge_rate` ( `user` varchar(32) DEFAULT NULL, `movie` varchar(64) DEFAULT NULL, `score` int(11) unsigned DEFAULT NULL, `datatime` varchar(32) DEFAULT NULL ); DROP TABLE IF EXISTS `vertex_movie`; CREATE TABLE `vertex_movie` ( `movie` varchar(64) DEFAULT NULL, `year` varchar(32) DEFAULT NULL, `genres` varchar(64) DEFAULT NULL ); DROP TABLE IF EXISTS `vertex_user`; CREATE TABLE `vertex_user` ( `user` varchar(32) DEFAULT NULL, `gender` varchar(32) DEFAULT NULL, `age` varchar(32) DEFAULT NULL, `occupation` varchar(32) DEFAULT NULL, `zip-code` varchar(32) DEFAULT NULL ); 创建MRS Hive标准数据表。 将原始数据结构根据GES图导入的要求标准化。则点表vertex_user和vertex_movie需要在第二列补充标签label,边表edge_rate和edge_friends需要在第三列补充标签label。 点数据集和边数据集应符合GES图数据格式要求。图数据格式要求简要介绍如下,详情可参见一般图数据格式。 点数据集罗列了各个点的数据信息。一行为一个点的数据。格式如下所示,id是点数据的唯一标识。 id,label,property 1,property 2,property 3,… 边数据集罗列了各个边的数据信息,一行为一条边的数据。GES中图规格是以边的数量进行定义的,如一百万边。格式如下所示,id 1、id 2是一条边的两个端点的id。 id 1, id 2, label, property 1, property 2, … 您可以在DataArts Studio数据开发模块,选择在管理中心创建数据连接中创建的MRS Hive数据连接,并选择数据库后,执行如下SQL语句,在MRS Hive数据库中创建一个标准数据表。 图4 创建MRS Hive标准数据表 DROP TABLE IF EXISTS `edge_friends`; CREATE TABLE test_ges.`edge_friends` ( `user1` STRING COMMENT '', `user2` STRING COMMENT '', `label` STRING COMMENT '' ); DROP TABLE IF EXISTS `edge_rate`; CREATE TABLE test_ges.`edge_rate` ( `user` STRING COMMENT '', `movie` STRING COMMENT '', `label` STRING COMMENT '', `score` INT COMMENT '', `datatime` STRING COMMENT '' ); DROP TABLE IF EXISTS `vertex_movie`; CREATE TABLE test_ges.`vertex_movie` ( `movie` STRING COMMENT '', `label` STRING COMMENT '', `year` STRING COMMENT '', `genres` STRING COMMENT '' ); DROP TABLE IF EXISTS `vertex_user`; CREATE TABLE test_ges.`vertex_user` ( `user` STRING COMMENT '', `label` STRING COMMENT '', `gender` STRING COMMENT '', `age` STRING COMMENT '', `occupation` STRING COMMENT '', `zip-code` STRING COMMENT '' );
-
约束限制 通过Import GES节点自动生成元数据时,有如下约束限制: 生成元数据时,目前仅支持选择单标签(Label)场景的点表和边表。如果点表或边表中存在多个标签,则生成的元数据会存在缺失。 生成元数据xml文件是手动单击“生成元数据”触发的,如果在该节点在后续的作业调度运行中,点表和边表结构发生变化,元数据xml文件并不会随之更新,需要手动进入新建元数据窗口,再次单击“生成元数据”重新生成新的元数据xml文件。 生成的元数据xml文件,属性(Property)中的数据复合类型(Cardinality),目前仅支持填写为“single”类型,不支持自定义。 生成元数据功能本身,支持一次生成多对点表和边表的元数据xml文件。但考虑到Import GES节点的“边数据集”和“点数据集”参数,分别只能选择一张表,建议您在有多对点表和边表的情况下,分拆多个Import GES节点分别导入,以确保导入图数据时,元数据与每对点表和边表能够一一对应。
-
场景说明 本案例基于某电影网站的用户和评分数据,使用DataArts Studio将MySQL原始数据处理为标准点数据集和边数据集,并同步到OBS和MRS Hive中,然后通过Import GES节点自动生成元数据后,将图数据导入到GES服务中。 图1 业务场景说明 需要额外说明的是,GES图数据格式包含三部分:点数据集、边数据集以及元数据,如果原始数据不符合GES指定的格式,则需要将数据整理为GES支持的格式。 点数据集用于存放点数据。 边数据集用于存放边数据。 元数据用于描述点数据集和边数据集中的数据格式。 GES相关概念和图数据介绍请参见一般图数据格式。
-
设置依赖作业后的作业运行原理 同周期依赖和跨周期依赖的作业运行原理有所差异。为方便说明,本例中假设“依赖的作业失败后,当前作业处理策略”参数设置为“继续执行”,作业A不判断作业B的实例运行状态;如果该参数设置为“挂起”或“取消执行”,则作业A还会额外判断作业B的实例中是否存在失败实例。 同周期依赖:即作业A与其依赖作业B为相同调度周期,如分钟依赖分钟、小时依赖小时或天依赖天。 同周期依赖的情况下,当作业A的依赖作业配置为作业B后,作业A会在 (作业A执行时间-作业A周期时间, 作业A执行时间] 时间区间内检查是否有作业B的实例运行,只有在此期间作业B的实例运行完成才会运行作业A。 示例1:作业A依赖作业B,均为分钟调度。作业A的开始时间10:00,周期时间20分钟;作业B的开始时间10:00,周期时间10分钟。则会出现如下情况: 表1 示例1:同周期作业依赖情况 时间点 作业B(分钟调度,开始时间10:00,周期时间10分钟) 作业A(分钟调度,开始时间10:00,周期时间20分钟) 10:00 执行 检查 (09:40, 10:00] 区间,有作业B实例运行,待作业B执行完成后,执行作业A 10:10 执行 - 10:20 执行 检查 (10:00, 10:20] 区间,有作业B实例运行,待作业B执行完成后,执行作业A 10:30 执行 - ... ... ... 示例2:作业A依赖作业B,均为天调度。作业A的开始时间为8月1日09:00;作业B的开始时间8月1日10:00。则会出现如下情况: 表2 示例2:同周期作业依赖情况 时间点 作业B(天调度,开始时间为8月1日10:00) 作业A(天调度,开始时间8月1日09:00) 8月1日09:00 - 检查 (7月31日09:00, 8月1日09:00] 区间,无作业B实例运行,不执行作业A 8月1日10:00 执行 - 8月2日09:00 - 检查 (8月1日09:00, 8月2日09:00] 区间,有作业B实例运行,待作业B执行完成后,执行作业A 8月2日10:00 执行 - ... ... ... 天作业依赖天作业,上游作业调度时间早于下游作业,下游作业才能依赖到上游当天的作业。 跨周期依赖:即作业A与其依赖作业B为不同调度周期,如小时依赖分钟、天依赖分钟、天依赖小时或月依赖天。 跨周期依赖的情况下,当作业A的依赖作业配置为作业B后,作业A会在 [上一作业A调度周期的自然起点, 当前作业A调度周期的自然起点) 时间区间内检查是否有作业B的实例运行,只有在此期间作业B的实例运行完成才会运行作业A。 调度周期的自然起点定义如下: 调度周期为小时:上一调度周期的自然起点为上一小时的零分零秒,当前调度周期的自然起点为当前小时的零分零秒。 调度周期为天:上一调度周期的自然起点为昨天的零点零分零秒,当前调度周期的自然起点为今天的零点零分零秒。 调度周期为月:上一调度周期的自然起点为上个月1号的零点零分零秒,当前调度周期的自然起点为当月1号的零点零分零秒。 示例3:作业A依赖作业B,作业A为天调度,作业B为小时调度。作业A的每天02:00执行;作业B的开始时间00:00,间隔时间10小时。则会出现如下情况: 表3 示例3:跨周期作业依赖情况 时间点 作业B(小时调度,开始时间00:00,间隔时间10小时) 作业A(天调度,每天02:00执行) 第1天00:00 执行 - 第1天02:00 - 检查 [第0天00:00:00, 第1天00:00:00) 区间,无作业B实例运行,不执行 第1天10:00 执行 - 第1天20:00 执行 - 第2天00:00 执行 - 第2天02:00 - 检查 [第1天00:00:00, 第2天00:00:00) 区间,有作业B实例运行完成,执行作业A 第2天10:00 执行 - 第2天20:00 执行 - ... ... ... 示例4:作业A依赖作业B,作业A为月调度,作业B为天调度。作业A的每月1号、2号的02:00执行;作业B在8月1日00:00开始执行。则会出现如下情况: 表4 示例4:跨周期作业依赖情况 时间点 作业B(天调度,8月1日00:00执行) 作业A(月调度,每月1号、2号的02:00执行) 8月1日00:00 执行 - 8月1日02:00 - 检查 [7月1日00:00:00, 8月1日00:00:00) 区间,无作业B实例运行,不执行 8月2日00:00 执行 - 8月2日02:00 - 检查 [7月1日00:00:00, 8月1日00:00:00) 区间,无作业B实例运行,不执行 ... - ... 9月1日00:00 执行 - 9月1日02:00 - 检查 [8月1日00:00:00, 9月1日00:00:00) 区间,有作业B实例运行完成,执行作业A 9月2日00:00 执行 - 9月2日02:00 - 检查 [8月1日00:00:00, 9月1日00:00:00) 区间,有作业B实例运行完成,执行作业A ... ... ...
-
设置依赖作业的条件 当前周期调度作业的调度周期包括分钟、小时、天、周、月这五种周期,周期调度作业A如果要配置依赖作业为周期调度作业B,则调度周期必须符合以下要求: 作业A的调度周期不能比依赖作业B小。例如,作业A和作业B同为分钟/小时调度,A的间隔时间小于B的间隔时间,则作业A不能设置作业B为依赖作业;作业A为分钟调度,作业B为小时调度,则作业A不能设置作业B为依赖作业。 作业A和依赖作业B中不能有任一调度周期为周。例如,作业A的调度周期为周或作业B的调度周期为周,则作业A不能设置作业B为依赖作业。 调度周期为月的作业只能依赖调度周期为天的作业。例如,作业A的调度周期为月,则作业A只能设置调度周期为天的作业为依赖作业。 不同调度周期的作业,其允许配置的依赖作业调度周期总结如图2所示。 图2 作业依赖关系全景图
-
解释说明 周期调度作业支持设置调度周期符合条件的作业为依赖作业。设置依赖作业的操作详情请参考配置作业调度任务(批处理作业)章节。 例如周期调度作业A,可设置其依赖作业为作业B,如图1所示进行配置。则仅当其依赖的作业B在某段时间内所有实例运行完成、且不存在失败实例时,才开始执行作业A。 依赖的作业B的“某段时间”,计算方法如下,详见后文设置依赖作业后的作业运行原理。 同周期依赖,如分钟依赖分钟、小时依赖小时或天依赖天时,“某段时间”为 (作业A执行时间-作业A周期时间, 作业A执行时间] 。 跨周期依赖:如小时依赖分钟、天依赖分钟、天依赖小时或月依赖天时,“某段时间”为 [上一作业A调度周期的自然起点, 当前作业A调度周期的自然起点) 。 作业A是否判断其依赖的作业B的实例状态,与“依赖的作业失败后,当前作业处理策略”参数有关,具体如下: “依赖的作业失败后,当前作业处理策略”参数配置为“挂起”或“取消执行”后,当其依赖的作业B在某段时间内存在运行失败实例,则作业A“挂起”或“取消执行”。 “依赖的作业失败后,当前作业处理策略”参数配置为“继续执行”,只要其依赖的作业B在某段时间内所有实例跑完(不判断其状态),则作业A就继续执行。 图1 作业依赖属性
-
使用 DLI SQL脚本开发构建告警报表脚本 我们需要通过SQL脚本在DLI中新建OBS表来存放数据表,然后再构建一个SQL脚本来统计告警信息。 在DataArts Studio管理中心模块创建一个到DLI的连接,数据连接名称为“dli”。 进入数据开发模块,在DLI中创建一个数据库,用于存放数据表,数据库名称为“dlitest”。 创建一个DLI SQL脚本,通过SQL语句来创建数据表alarm_info,alarm_count_info。 其中,alarm_info、alarm_count_info都为OBS表,数据存储在OBS中,分别用于存放原始告警表、告警统计报表。 图9 创建数据表 关键操作说明: 图9中的脚本开发区为临时调试区,关闭脚本页签后,开发区的内容将丢失。如需保留该SQL脚本,请单击,将脚本保存至指定的目录中。 关键参数说明: 数据连接:1中创建的DLI数据连接。 数据库:2中创建的数据库。 资源队列:使用DLI提供的默认资源队列“default”。 SQL语句:如下所示。 create table alarm_info(alarm_time string, alarm_id string, alarm_type int ) using csv options(path 'obs://dlfexample/alarm_info') partitioned by(alarm_time); create table alarm_count_info(alarm_time string, alarm_type int, alarm_count int) using csv options(path 'obs://dlfexample/alarm_count_info'); 单击运行脚本,创建alarm_info、alarm_count_info数据表。 清空编辑器中4的SQL语句,重新输入SQL语句。 ALTER TABLE alarm_info ADD PARTITION (alarm_time = ${dayParam}) LOCATION 'obs://dlfexample/alarm_info/${obsPathYear}'; insert into alarm_count_info select alarm_time,alarm_type,count(alarm_type) from alarm_info where alarm_time = ${dayParam} group by alarm_time,alarm_type; SQL语句实现的功能: 在OBS的“obs://dlfexample/alarm_info”目录下,根据日期新建DLI分区。假设当前日期为2018/10/10,那么在“obs://dlfexample/alarm_info”目录下新建“2018/10/09”的DLI分区,用于存放前一天的数据表。 按照告警分区时间和告警类别进行统计,将统计结果插入alarm_count_info数据表。 关键参数说明: ${dayParam}:dayParam是指alarm_info表分区值,在脚本编辑器下方输入具体的参数值“$getCurrentTime(@@yyyyMMdd@@,-24*60*60)”。 ${obsPathYear}:obsPathYear是指OBS分区目录路径,在脚本编辑器下方输入具体的参数值“$getCurrentTime(@@yyyy/MM/dd@@,-24*60*60)”。 脚本调试无误后,我们需要保存该脚本,脚本名称为“dli_partition_count”。在后续的作业中设置为定期执行该脚本(使用DLF作业开发和作业调度每天定时输出告警统计报表),实现定期输出告警统计报表。
-
创建CDM作业 方案的最后一步需要将OBS中的告警统计报表迁移到RDS MySQL中,我们选择使用CDM来实现该功能。 关键参数说明: 作业名称:obs_rds,在后续的作业中设置为定期执行该作业(使用DLF作业开发和作业调度每天定时输出告警统计报表),实现定期迁移数据。 源端:存储告警统计报表的OBS目录,源连接“obs_link”需要提前在CDM中创建好。 目的端:即将存储告警统计报表的RDS MySQL空间,目的连接“mysql_link”需要提前在CDM中创建好。
共100000条
- 1
- ...
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- ...
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
- 1000
- 1001
- 1002
- 1003
- 1004
- 1005
- 1006
- 1007
- 1008
- 1009
- 1010
- 1011
- 1012
- 1013
- 1014
- 1015
- 1016
- 1017
- 1018
- 1019
- 1020
- 1021
- 1022
- 1023
- 1024
- 1025
- 1026
- 1027
- 1028
- 1029
- 1030
- 1031
- 1032
- 1033
- 1034
- 1035
- 1036
- 1037
- 1038
- 1039
- 1040
- 1041
- 1042
- 1043
- 1044
- 1045
- 1046
- 1047
- 1048
- 1049
- 1050
- 1051
- 1052
- 1053
- 1054
- 1055
- 1056
- 1057
- 1058
- 1059
- 1060
- 1061
- 1062
- 1063
- 1064
- 1065
- 1066
- 1067
- 1068
- 1069
- 1070
- 1071
- 1072
- 1073
- 1074
- 1075
- 1076
- 1077
- 1078
- 1079
- 1080
- 1081
- 1082
- 1083
- 1084
- 1085
- 1086
- 1087
- 1088
- 1089
- 1090
- 1091
- 1092
- 1093
- 1094
- 1095
- 1096
- 1097
- 1098
- 1099
- 1100
- 1101
- 1102
- 1103
- 1104
- 1105
- 1106
- 1107
- 1108
- 1109
- 1110
- 1111
- 1112
- 1113
- 1114
- 1115
- 1116
- 1117
- 1118
- 1119
- 1120
- 1121
- 1122
- 1123
- 1124
- 1125
- 1126
- 1127
- 1128
- 1129
- 1130
- 1131
- 1132
- 1133
- 1134
- 1135
- 1136
- 1137
- 1138
- 1139
- 1140
- 1141
- 1142
- 1143
- 1144
- 1145
- 1146
- 1147
- 1148
- 1149
- 1150
- 1151
- 1152
- 1153
- 1154
- 1155
- 1156
- 1157
- 1158
- 1159
- 1160
- 1161
- 1162
- 1163
- 1164
- 1165
- 1166
- 1167
- 1168
- 1169
- 1170
- 1171
- 1172
- 1173
- 1174
- 1175
- 1176
- 1177
- 1178
- 1179
- 1180
- 1181
- 1182
- 1183
- 1184
- 1185
- 1186
- 1187
- 1188
- 1189
- 1190
- 1191
- 1192
- 1193
- 1194
- 1195
- 1196
- 1197
- 1198
- 1199
- 1200
- 1201
- 1202
- 1203
- 1204
- 1205
- 1206
- 1207
- 1208
- 1209
- 1210
- 1211
- 1212
- 1213
- 1214
- 1215
- 1216
- 1217
- 1218
- 1219
- 1220
- 1221
- 1222
- 1223
- 1224
- 1225
- 1226
- 1227
- 1228
- 1229
- 1230
- 1231
- 1232
- 1233
- 1234
- 1235
- 1236
- 1237
- 1238
- 1239
- 1240
- 1241
- 1242
- 1243
- 1244
- 1245
- 1246
- 1247
- 1248
- 1249
- 1250
- 1251
- 1252
- 1253
- 1254
- 1255
- 1256
- 1257
- 1258
- 1259
- 1260
- 1261
- 1262
- 1263
- 1264
- 1265
- 1266
- 1267
- 1268
- 1269
- 1270
- 1271
- 1272
- 1273
- 1274
- 1275
- 1276
- 1277
- 1278
- 1279
- 1280
- 1281
- 1282
- 1283
- 1284
- 1285
- 1286
- 1287
- 1288
- 1289
- 1290
- 1291
- 1292
- 1293
- 1294
- 1295
- 1296
- 1297
- 1298
- 1299
- 1300
- 1301
- 1302
- 1303
- 1304
- 1305
- 1306
- 1307
- 1308
- 1309
- 1310
- 1311
- 1312
- 1313
- 1314
- 1315
- 1316
- 1317
- 1318
- 1319
- 1320
- 1321
- 1322
- 1323
- 1324
- 1325
- 1326
- 1327
- 1328
- 1329
- 1330
- 1331
- 1332
- 1333
- 1334
- 1335
- 1336
- 1337
- 1338
- 1339
- 1340
- 1341
- 1342
- 1343
- 1344
- 1345
- 1346
- 1347
- 1348
- 1349
- 1350
- 1351
- 1352
- 1353
- 1354
- 1355
- 1356
- 1357
- 1358
- 1359
- 1360
- 1361
- 1362
- 1363
- 1364
- 1365
- 1366
- 1367
- 1368
- 1369
- 1370
- 1371
- 1372
- 1373
- 1374
- 1375
- 1376
- 1377
- 1378
- 1379
- 1380
- 1381
- 1382
- 1383
- 1384
- 1385
- 1386
- 1387
- 1388
- 1389
- 1390
- 1391
- 1392
- 1393
- 1394
- 1395
- 1396
- 1397
- 1398
- 1399
- 1400
- 1401
- 1402
- 1403
- 1404
- 1405
- 1406
- 1407
- 1408
- 1409
- 1410
- 1411
- 1412
- 1413
- 1414
- 1415
- 1416
- 1417
- 1418
- 1419
- 1420
- 1421
- 1422
- 1423
- 1424
- 1425
- 1426
- 1427
- 1428
- 1429
- 1430
- 1431
- 1432
- 1433
- 1434
- 1435
- 1436
- 1437
- 1438
- 1439
- 1440
- 1441
- 1442
- 1443
- 1444
- 1445
- 1446
- 1447
- 1448
- 1449
- 1450
- 1451
- 1452
- 1453
- 1454
- 1455
- 1456
- 1457
- 1458
- 1459
- 1460
- 1461
- 1462
- 1463
- 1464
- 1465
- 1466
- 1467
- 1468
- 1469
- 1470
- 1471
- 1472
- 1473
- 1474
- 1475
- 1476
- 1477
- 1478
- 1479
- 1480
- 1481
- 1482
- 1483
- 1484
- 1485
- 1486
- 1487
- 1488
- 1489
- 1490
- 1491
- 1492
- 1493
- 1494
- 1495
- 1496
- 1497
- 1498
- 1499
- 1500
- 1501
- 1502
- 1503
- 1504
- 1505
- 1506
- 1507
- 1508
- 1509
- 1510
- 1511
- 1512
- 1513
- 1514
- 1515
- 1516
- 1517
- 1518
- 1519
- 1520
- 1521
- 1522
- 1523
- 1524
- 1525
- 1526
- 1527
- 1528
- 1529
- 1530
- 1531
- 1532
- 1533
- 1534
- 1535
- 1536
- 1537
- 1538
- 1539
- 1540
- 1541
- 1542
- 1543
- 1544
- 1545
- 1546
- 1547
- 1548
- 1549
- 1550
- 1551
- 1552
- 1553
- 1554
- 1555
- 1556
- 1557
- 1558
- 1559
- 1560
- 1561
- 1562
- 1563
- 1564
- 1565
- 1566
- 1567
- 1568
- 1569
- 1570
- 1571
- 1572
- 1573
- 1574
- 1575
- 1576
- 1577
- 1578
- 1579
- 1580
- 1581
- 1582
- 1583
- 1584
- 1585
- 1586
- 1587
- 1588
- 1589
- 1590
- 1591
- 1592
- 1593
- 1594
- 1595
- 1596
- 1597
- 1598
- 1599
- 1600
- 1601
- 1602
- 1603
- 1604
- 1605
- 1606
- 1607
- 1608
- 1609
- 1610
- 1611
- 1612
- 1613
- 1614
- 1615
- 1616
- 1617
- 1618
- 1619
- 1620
- 1621
- 1622
- 1623
- 1624
- 1625
- 1626
- 1627
- 1628
- 1629
- 1630
- 1631
- 1632
- 1633
- 1634
- 1635
- 1636
- 1637
- 1638
- 1639
- 1640
- 1641
- 1642
- 1643
- 1644
- 1645
- 1646
- 1647
- 1648
- 1649
- 1650
- 1651
- 1652
- 1653
- 1654
- 1655
- 1656
- 1657
- 1658
- 1659
- 1660
- 1661
- 1662
- 1663
- 1664
- 1665
- 1666
- 1667
- 1668
- 1669
- 1670
- 1671
- 1672
- 1673
- 1674
- 1675
- 1676
- 1677
- 1678
- 1679
- 1680
- 1681
- 1682
- 1683
- 1684
- 1685
- 1686
- 1687
- 1688
- 1689
- 1690
- 1691
- 1692
- 1693
- 1694
- 1695
- 1696
- 1697
- 1698
- 1699
- 1700
- 1701
- 1702
- 1703
- 1704
- 1705
- 1706
- 1707
- 1708
- 1709
- 1710
- 1711
- 1712
- 1713
- 1714
- 1715
- 1716
- 1717
- 1718
- 1719
- 1720
- 1721
- 1722
- 1723
- 1724
- 1725
- 1726
- 1727
- 1728
- 1729
- 1730
- 1731
- 1732
- 1733
- 1734
- 1735
- 1736
- 1737
- 1738
- 1739
- 1740
- 1741
- 1742
- 1743
- 1744
- 1745
- 1746
- 1747
- 1748
- 1749
- 1750
- 1751
- 1752
- 1753
- 1754
- 1755
- 1756
- 1757
- 1758
- 1759
- 1760
- 1761
- 1762
- 1763
- 1764
- 1765
- 1766
- 1767
- 1768
- 1769
- 1770
- 1771
- 1772
- 1773
- 1774
- 1775
- 1776
- 1777
- 1778
- 1779
- 1780
- 1781
- 1782
- 1783
- 1784
- 1785
- 1786
- 1787
- 1788
- 1789
- 1790
- 1791
- 1792
- 1793
- 1794
- 1795
- 1796
- 1797
- 1798
- 1799
- 1800
- 1801
- 1802
- 1803
- 1804
- 1805
- 1806
- 1807
- 1808
- 1809
- 1810
- 1811
- 1812
- 1813
- 1814
- 1815
- 1816
- 1817
- 1818
- 1819
- 1820
- 1821
- 1822
- 1823
- 1824
- 1825
- 1826
- 1827
- 1828
- 1829
- 1830
- 1831
- 1832
- 1833
- 1834
- 1835
- 1836
- 1837
- 1838
- 1839
- 1840
- 1841
- 1842
- 1843
- 1844
- 1845
- 1846
- 1847
- 1848
- 1849
- 1850
- 1851
- 1852
- 1853
- 1854
- 1855
- 1856
- 1857
- 1858
- 1859
- 1860
- 1861
- 1862
- 1863
- 1864
- 1865
- 1866
- 1867
- 1868
- 1869
- 1870
- 1871
- 1872
- 1873
- 1874
- 1875
- 1876
- 1877
- 1878
- 1879
- 1880
- 1881
- 1882
- 1883
- 1884
- 1885
- 1886
- 1887
- 1888
- 1889
- 1890
- 1891
- 1892
- 1893
- 1894
- 1895
- 1896
- 1897
- 1898
- 1899
- 1900
- 1901
- 1902
- 1903
- 1904
- 1905
- 1906
- 1907
- 1908
- 1909
- 1910
- 1911
- 1912
- 1913
- 1914
- 1915
- 1916
- 1917
- 1918
- 1919
- 1920
- 1921
- 1922
- 1923
- 1924
- 1925
- 1926
- 1927
- 1928
- 1929
- 1930
- 1931
- 1932
- 1933
- 1934
- 1935
- 1936
- 1937
- 1938
- 1939
- 1940
- 1941
- 1942
- 1943
- 1944
- 1945
- 1946
- 1947
- 1948
- 1949
- 1950
- 1951
- 1952
- 1953
- 1954
- 1955
- 1956
- 1957
- 1958
- 1959
- 1960
- 1961
- 1962
- 1963
- 1964
- 1965
- 1966
- 1967
- 1968
- 1969
- 1970
- 1971
- 1972
- 1973
- 1974
- 1975
- 1976
- 1977
- 1978
- 1979
- 1980
- 1981
- 1982
- 1983
- 1984
- 1985
- 1986
- 1987
- 1988
- 1989
- 1990
- 1991
- 1992
- 1993
- 1994
- 1995
- 1996
- 1997
- 1998
- 1999
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
- 2031
- 2032
- 2033
- 2034
- 2035
- 2036
- 2037
- 2038
- 2039
- 2040
- 2041
- 2042
- 2043
- 2044
- 2045
- 2046
- 2047
- 2048
- 2049
- 2050
- 2051
- 2052
- 2053
- 2054
- 2055
- 2056
- 2057
- 2058
- 2059
- 2060
- 2061
- 2062
- 2063
- 2064
- 2065
- 2066
- 2067
- 2068
- 2069
- 2070
- 2071
- 2072
- 2073
- 2074
- 2075
- 2076
- 2077
- 2078
- 2079
- 2080
- 2081
- 2082
- 2083
- 2084
- 2085
- 2086
- 2087
- 2088
- 2089
- 2090
- 2091
- 2092
- 2093
- 2094
- 2095
- 2096
- 2097
- 2098
- 2099
- 2100
- 2101
- 2102
- 2103
- 2104
- 2105
- 2106
- 2107
- 2108
- 2109
- 2110
- 2111
- 2112
- 2113
- 2114
- 2115
- 2116
- 2117
- 2118
- 2119
- 2120
- 2121
- 2122
- 2123
- 2124
- 2125
- 2126
- 2127
- 2128
- 2129
- 2130
- 2131
- 2132
- 2133
- 2134
- 2135
- 2136
- 2137
- 2138
- 2139
- 2140
- 2141
- 2142
- 2143
- 2144
- 2145
- 2146
- 2147
- 2148
- 2149
- 2150
- 2151
- 2152
- 2153
- 2154
- 2155
- 2156
- 2157
- 2158
- 2159
- 2160
- 2161
- 2162
- 2163
- 2164
- 2165
- 2166
- 2167
- 2168
- 2169
- 2170
- 2171
- 2172
- 2173
- 2174
- 2175
- 2176
- 2177
- 2178
- 2179
- 2180
- 2181
- 2182
- 2183
- 2184
- 2185
- 2186
- 2187
- 2188
- 2189
- 2190
- 2191
- 2192
- 2193
- 2194
- 2195
- 2196
- 2197
- 2198
- 2199
- 2200
- 2201
- 2202
- 2203
- 2204
- 2205
- 2206
- 2207
- 2208
- 2209
- 2210
- 2211
- 2212
- 2213
- 2214
- 2215
- 2216
- 2217
- 2218
- 2219
- 2220
- 2221
- 2222
- 2223
- 2224
- 2225
- 2226
- 2227
- 2228
- 2229
- 2230
- 2231
- 2232
- 2233
- 2234
- 2235
- 2236
- 2237
- 2238
- 2239
- 2240
- 2241
- 2242
- 2243
- 2244
- 2245
- 2246
- 2247
- 2248
- 2249
- 2250
- 2251
- 2252
- 2253
- 2254
- 2255
- 2256
- 2257
- 2258
- 2259
- 2260
- 2261
- 2262
- 2263
- 2264
- 2265
- 2266
- 2267
- 2268
- 2269
- 2270
- 2271
- 2272
- 2273
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2291
- 2292
- 2293
- 2294
- 2295
- 2296
- 2297
- 2298
- 2299
- 2300
- 2301
- 2302
- 2303
- 2304
- 2305
- 2306
- 2307
- 2308
- 2309
- 2310
- 2311
- 2312
- 2313
- 2314
- 2315
- 2316
- 2317
- 2318
- 2319
- 2320
- 2321
- 2322
- 2323
- 2324
- 2325
- 2326
- 2327
- 2328
- 2329
- 2330
- 2331
- 2332
- 2333
- 2334
- 2335
- 2336
- 2337
- 2338
- 2339
- 2340
- 2341
- 2342
- 2343
- 2344
- 2345
- 2346
- 2347
- 2348
- 2349
- 2350
- 2351
- 2352
- 2353
- 2354
- 2355
- 2356
- 2357
- 2358
- 2359
- 2360
- 2361
- 2362
- 2363
- 2364
- 2365
- 2366
- 2367
- 2368
- 2369
- 2370
- 2371
- 2372
- 2373
- 2374
- 2375
- 2376
- 2377
- 2378
- 2379
- 2380
- 2381
- 2382
- 2383
- 2384
- 2385
- 2386
- 2387
- 2388
- 2389
- 2390
- 2391
- 2392
- 2393
- 2394
- 2395
- 2396
- 2397
- 2398
- 2399
- 2400
- 2401
- 2402
- 2403
- 2404
- 2405
- 2406
- 2407
- 2408
- 2409
- 2410
- 2411
- 2412
- 2413
- 2414
- 2415
- 2416
- 2417
- 2418
- 2419
- 2420
- 2421
- 2422
- 2423
- 2424
- 2425
- 2426
- 2427
- 2428
- 2429
- 2430
- 2431
- 2432
- 2433
- 2434
- 2435
- 2436
- 2437
- 2438
- 2439
- 2440
- 2441
- 2442
- 2443
- 2444
- 2445
- 2446
- 2447
- 2448
- 2449
- 2450
- 2451
- 2452
- 2453
- 2454
- 2455
- 2456
- 2457
- 2458
- 2459
- 2460
- 2461
- 2462
- 2463
- 2464
- 2465
- 2466
- 2467
- 2468
- 2469
- 2470
- 2471
- 2472
- 2473
- 2474
- 2475
- 2476
- 2477
- 2478
- 2479
- 2480
- 2481
- 2482
- 2483
- 2484
- 2485
- 2486
- 2487
- 2488
- 2489
- 2490
- 2491
- 2492
- 2493
- 2494
- 2495
- 2496
- 2497
- 2498
- 2499
- 2500
- 2501
- 2502
- 2503
- 2504
- 2505
- 2506
- 2507
- 2508
- 2509
- 2510
- 2511
- 2512
- 2513
- 2514
- 2515
- 2516
- 2517
- 2518
- 2519
- 2520
- 2521
- 2522
- 2523
- 2524
- 2525
- 2526
- 2527
- 2528
- 2529
- 2530
- 2531
- 2532
- 2533
- 2534
- 2535
- 2536
- 2537
- 2538
- 2539
- 2540
- 2541
- 2542
- 2543
- 2544
- 2545
- 2546
- 2547
- 2548
- 2549
- 2550
- 2551
- 2552
- 2553
- 2554
- 2555
- 2556
- 2557
- 2558
- 2559
- 2560
- 2561
- 2562
- 2563
- 2564
- 2565
- 2566
- 2567
- 2568
- 2569
- 2570
- 2571
- 2572
- 2573
- 2574
- 2575
- 2576
- 2577
- 2578
- 2579
- 2580
- 2581
- 2582
- 2583
- 2584
- 2585
- 2586
- 2587
- 2588
- 2589
- 2590
- 2591
- 2592
- 2593
- 2594
- 2595
- 2596
- 2597
- 2598
- 2599
- 2600
- 2601
- 2602
- 2603
- 2604
- 2605
- 2606
- 2607
- 2608
- 2609
- 2610
- 2611
- 2612
- 2613
- 2614
- 2615
- 2616
- 2617
- 2618
- 2619
- 2620
- 2621
- 2622
- 2623
- 2624
- 2625
- 2626
- 2627
- 2628
- 2629
- 2630
- 2631
- 2632
- 2633
- 2634
- 2635
- 2636
- 2637
- 2638
- 2639
- 2640
- 2641
- 2642
- 2643
- 2644
- 2645
- 2646
- 2647
- 2648
- 2649
- 2650
- 2651
- 2652
- 2653
- 2654
- 2655
- 2656
- 2657
- 2658
- 2659
- 2660
- 2661
- 2662
- 2663
- 2664
- 2665
- 2666
- 2667
- 2668
- 2669
- 2670
- 2671
- 2672
- 2673
- 2674
- 2675
- 2676
- 2677
- 2678
- 2679
- 2680
- 2681
- 2682
- 2683
- 2684
- 2685
- 2686
- 2687
- 2688
- 2689
- 2690
- 2691
- 2692
- 2693
- 2694
- 2695
- 2696
- 2697
- 2698
- 2699
- 2700
- 2701
- 2702
- 2703
- 2704
- 2705
- 2706
- 2707
- 2708
- 2709
- 2710
- 2711
- 2712
- 2713
- 2714
- 2715
- 2716
- 2717
- 2718
- 2719
- 2720
- 2721
- 2722
- 2723
- 2724
- 2725
- 2726
- 2727
- 2728
- 2729
- 2730
- 2731
- 2732
- 2733
- 2734
- 2735
- 2736
- 2737
- 2738
- 2739
- 2740
- 2741
- 2742
- 2743
- 2744
- 2745
- 2746
- 2747
- 2748
- 2749
- 2750
- 2751
- 2752
- 2753
- 2754
- 2755
- 2756
- 2757
- 2758
- 2759
- 2760
- 2761
- 2762
- 2763
- 2764
- 2765
- 2766
- 2767
- 2768
- 2769
- 2770
- 2771
- 2772
- 2773
- 2774
- 2775
- 2776
- 2777
- 2778
- 2779
- 2780
- 2781
- 2782
- 2783
- 2784
- 2785
- 2786
- 2787
- 2788
- 2789
- 2790
- 2791
- 2792
- 2793
- 2794
- 2795
- 2796
- 2797
- 2798
- 2799
- 2800
- 2801
- 2802
- 2803
- 2804
- 2805
- 2806
- 2807
- 2808
- 2809
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2816
- 2817
- 2818
- 2819
- 2820
- 2821
- 2822
- 2823
- 2824
- 2825
- 2826
- 2827
- 2828
- 2829
- 2830
- 2831
- 2832
- 2833
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2844
- 2845
- 2846
- 2847
- 2848
- 2849
- 2850
- 2851
- 2852
- 2853
- 2854
- 2855
- 2856
- 2857
- 2858
- 2859
- 2860
- 2861
- 2862
- 2863
- 2864
- 2865
- 2866
- 2867
- 2868
- 2869
- 2870
- 2871
- 2872
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2890
- 2891
- 2892
- 2893
- 2894
- 2895
- 2896
- 2897
- 2898
- 2899
- 2900
- 2901
- 2902
- 2903
- 2904
- 2905
- 2906
- 2907
- 2908
- 2909
- 2910
- 2911
- 2912
- 2913
- 2914
- 2915
- 2916
- 2917
- 2918
- 2919
- 2920
- 2921
- 2922
- 2923
- 2924
- 2925
- 2926
- 2927
- 2928
- 2929
- 2930
- 2931
- 2932
- 2933
- 2934
- 2935
- 2936
- 2937
- 2938
- 2939
- 2940
- 2941
- 2942
- 2943
- 2944
- 2945
- 2946
- 2947
- 2948
- 2949
- 2950
- 2951
- 2952
- 2953
- 2954
- 2955
- 2956
- 2957
- 2958
- 2959
- 2960
- 2961
- 2962
- 2963
- 2964
- 2965
- 2966
- 2967
- 2968
- 2969
- 2970
- 2971
- 2972
- 2973
- 2974
- 2975
- 2976
- 2977
- 2978
- 2979
- 2980
- 2981
- 2982
- 2983
- 2984
- 2985
- 2986
- 2987
- 2988
- 2989
- 2990
- 2991
- 2992
- 2993
- 2994
- 2995
- 2996
- 2997
- 2998
- 2999
- 3000
- 3001
- 3002
- 3003
- 3004
- 3005
- 3006
- 3007
- 3008
- 3009
- 3010
- 3011
- 3012
- 3013
- 3014
- 3015
- 3016
- 3017
- 3018
- 3019
- 3020
- 3021
- 3022
- 3023
- 3024
- 3025
- 3026
- 3027
- 3028
- 3029
- 3030
- 3031
- 3032
- 3033
- 3034
- 3035
- 3036
- 3037
- 3038
- 3039
- 3040
- 3041
- 3042
- 3043
- 3044
- 3045
- 3046
- 3047
- 3048
- 3049
- 3050
- 3051
- 3052
- 3053
- 3054
- 3055
- 3056
- 3057
- 3058
- 3059
- 3060
- 3061
- 3062
- 3063
- 3064
- 3065
- 3066
- 3067
- 3068
- 3069
- 3070
- 3071
- 3072
- 3073
- 3074
- 3075
- 3076
- 3077
- 3078
- 3079
- 3080
- 3081
- 3082
- 3083
- 3084
- 3085
- 3086
- 3087
- 3088
- 3089
- 3090
- 3091
- 3092
- 3093
- 3094
- 3095
- 3096
- 3097
- 3098
- 3099
- 3100
- 3101
- 3102
- 3103
- 3104
- 3105
- 3106
- 3107
- 3108
- 3109
- 3110
- 3111
- 3112
- 3113
- 3114
- 3115
- 3116
- 3117
- 3118
- 3119
- 3120
- 3121
- 3122
- 3123
- 3124
- 3125
- 3126
- 3127
- 3128
- 3129
- 3130
- 3131
- 3132
- 3133
- 3134
- 3135
- 3136
- 3137
- 3138
- 3139
- 3140
- 3141
- 3142
- 3143
- 3144
- 3145
- 3146
- 3147
- 3148
- 3149
- 3150
- 3151
- 3152
- 3153
- 3154
- 3155
- 3156
- 3157
- 3158
- 3159
- 3160
- 3161
- 3162
- 3163
- 3164
- 3165
- 3166
- 3167
- 3168
- 3169
- 3170
- 3171
- 3172
- 3173
- 3174
- 3175
- 3176
- 3177
- 3178
- 3179
- 3180
- 3181
- 3182
- 3183
- 3184
- 3185
- 3186
- 3187
- 3188
- 3189
- 3190
- 3191
- 3192
- 3193
- 3194
- 3195
- 3196
- 3197
- 3198
- 3199
- 3200
- 3201
- 3202
- 3203
- 3204
- 3205
- 3206
- 3207
- 3208
- 3209
- 3210
- 3211
- 3212
- 3213
- 3214
- 3215
- 3216
- 3217
- 3218
- 3219
- 3220
- 3221
- 3222
- 3223
- 3224
- 3225
- 3226
- 3227
- 3228
- 3229
- 3230
- 3231
- 3232
- 3233
- 3234
- 3235
- 3236
- 3237
- 3238
- 3239
- 3240
- 3241
- 3242
- 3243
- 3244
- 3245
- 3246
- 3247
- 3248
- 3249
- 3250
- 3251
- 3252
- 3253
- 3254
- 3255
- 3256
- 3257
- 3258
- 3259
- 3260
- 3261
- 3262
- 3263
- 3264
- 3265
- 3266
- 3267
- 3268
- 3269
- 3270
- 3271
- 3272
- 3273
- 3274
- 3275
- 3276
- 3277
- 3278
- 3279
- 3280
- 3281
- 3282
- 3283
- 3284
- 3285
- 3286
- 3287
- 3288
- 3289
- 3290
- 3291
- 3292
- 3293
- 3294
- 3295
- 3296
- 3297
- 3298
- 3299
- 3300
- 3301
- 3302
- 3303
- 3304
- 3305
- 3306
- 3307
- 3308
- 3309
- 3310
- 3311
- 3312
- 3313
- 3314
- 3315
- 3316
- 3317
- 3318
- 3319
- 3320
- 3321
- 3322
- 3323
- 3324
- 3325
- 3326
- 3327
- 3328
- 3329
- 3330
- 3331
- 3332
- 3333
- 3333
推荐文章