【MaxCompute 常见问题】Tunnel SDK

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 使用 Tunnel SDK 上传数据时,上传的数据可以自动分配到各个分区吗?Tunnel SDK 上传数据时,是无法自动分配到各个分区的。每一次上传只支持将数据上传到一张表或表的一个分区,有分区的表一定要指定上传的分区,多级分区一定要指定到末级分区。

Tunnel SDK


Tunnel 连接 MaxCompute 常见使用问题


1. 使用 Tunnel SDK 上传数据时,上传的数据可以自动分配到各个分区吗?

Tunnel SDK 上传数据时,是无法自动分配到各个分区的。每一次上传只支持将数据上传到一张表或表的一个分区,有分区的表一定要指定上传的分区,多级分区一定要指定到末级分区。


2. 使用 Tunnel SDK 上传数据时,编写完 UDF 打成 JAR 包后上传,对 JAR 包大小有要求吗?

JAR 包不能超过 10 MB,如果 JAR 包超过 10 MB,建议转用 MaxCompute TunnelUpload令上传数据。


3. 使用 Tunnel SDK 上传数据时,是否有分区数量限制?

最大支持 6 万个分区。分区数量过多,不方便进行统计和分析。MaxCompute 会限制单个作业中 In stance 的数量。作业的 Instance 和用户输入的数据量及分区数量是密切相关的,因此建议先评估下业务,选择合适的分区策略,避免分区过多带来的影响。


4. 使用 Tunnel SDK 上传数据时,报错 StatusConflict,如何解决?

  • 问题现象使用 Tunnel SDK 上传数据时,返回如下报错。RequestId=20170116xxxxxxx,ErrorCode=StatusConflict, ErrorMessage=You cannot complete the specified operation under the current upload or download status. java.io.IOException: RequestId=20170116 xxxxxxx, ErrorCode=StatusConflict, ErrorMessage=You cannot complete the specified operation under the current upload or download status.at com.aliyun.odps.tunnel.io.TunnelRecordWriter.close(TunnelRecordWriter.java:9)
  • 问题原因:该问题是在 Close RecordWriter 时出现的,可能原因如下。
  • 对一个已经关闭的 RecordWriter 执行了关闭操作。
  • RecordWriter 对应的 Session 已经关闭。
  • Session 已经提交过。
  • 解决措施:您可以针对上述可能出现的原因进行排查,比如打印一些日志、在提交 Session 前打印一些当前 RecordWriter 的状态与 Session 的状态。确保无上述问题后,重新尝试上传数据。


5. 使用 Tunnel SDK 上传数据时,报错 Blocks Not Match,如何解决?

  • 问题现象:使用 Tunnel SDK 上传数据时,返回如下报错。

ErrorCode=Local Error,ErrorMessage=Blocks not match, server: 0, tunnelServiceClient: 1 at com.aliyun.odps.tunnel.TableTunnel$UploadSession.commit(TableTunnel.java:814)

  • 产生原因服务器收到的 Block 个数和 Commit 时参数的个数不一致。
  • 解决措施
  • 在代码中查看 uploadSession.openRecordWriter(i)打开的 Writer个数和 Commit 时的 Block数组,确保相对应。
  • 代码中写入执行完成后,确认是否调用 recordWriter.close(); 。如果直接执行 Commit,可能导致服务器端的 Block 个数不符合预期。


6. 一次性上传 8000 万条数据,在执行 odps tunnel recordWriter.close() 时报错StatusConflict,如何解决?

  • 问题现象一次性上传 8000 万条数据,在执行 odps tunnel recordWriter.close()时,返回如下报错。ErrorCode=StatusConflict, ErrorMessage=You cannot complete the specified operation under the current upload or download status.
  • 产生原因 Session 状态错误,前面的操作里已经关闭或者提交了该 Session
  • 解决措施
  • 建议重新创建一个 Session 再上传一次数据。对于不同的分区,每个分区需要单独的一个 Session。对于多次提交导致报错,请先检查数据是否已经上传成功,如果失败,请重新上传一次,请参见多线程上传示例


7. 如何使用 TunnelBufferedWriter 规避使用 Tunnel SDK 进行批量数据上传出错的问题?

MaxCompute Java SDK 0.21.3-public 版本之后新增了 BufferredWriter SDK,简化了数据上传,并且提供了容错功能。BufferedWriter 从用户角度看,就是在 Session 上打开一个 Writer 然后进行写记录即可。具体实现是,BufferedWriter 先将记录缓存在客户端的缓冲区中,并在缓冲区填满之后打开一个HTTP 连接进行上传。

BufferedWriter 会尽最大可能容错,保证数据上传成功,使用方法请参见BufferedWriter


8. 使用 Tunnel SDK 下载数据时,报错 You need to specify a

partitionspec along with the specified table,如何解决?

  • 问题现象使用 Tunnel SDK 下载分区表数据,返回如下报错。

ErrorCode=MissingPartitionSpec, ErrorMessage=You need to specify a partitionspec along with the specified table.

  • 产生原因使用 Tunnel SDK 下载分区表数据时,需要指定分区列的列值,否则会报错。
  • 解决措施
  • 如果您使用 MaxCompute 客户端工具里的 Tunnel 命令行进行导出,客户端支持分区表整个导,其结果会导出到一个文件夹里。
  • 如果您使用 Tunnel SDK 进行导出,可以先使用 SDK 获取分区表的所有分区,命令示例如下。

odps.tables().get(tablename) t.getPartitions()


9. BlockId是否可以重复?

同一个 UploadSession中的 BlockId 不能重复。对于同一个UploadSession,用一个 BlockId 打开RecordWriter,写入一批数据后,调用 Close,写入成功后不可以再用该 BlockId 打开另一个RecordWriter 写入数据。Block默认最多 20000 个,即取值范围为 0~19999


10. Block大小是否存在限制?

每次上传至 Tunnel 的数据块大小默认为 100 MiB。一个 Block 大小上限为 100 GB,强烈建议为大于 64 MB 的数据,每一个 Block 对应一个文件,小于 64 MB 的文件统称为小文件,小文件过多将会影响使用性能。如果数量较大且是持续上传模式,Block 的数据量在 64 MB~256 MB 之间; 如果是每天传一次的批量模式,Block 可以设置为 1 GB 左右。

使用新版BufferedWriter 可以更简单地进行上传且可以避免小文件等问题,详情请参见 Tunnel-SDK-BufferedWriter


11. 遇到读写超时或 IOException 时,如何解决?

上传数据时,Writer 每写入 8 KB 数据会触发一次网络动作,如果 120 秒内没有网络动作,服务端将主动关闭连接,届时 Writer 将不可用,请重新打开一个新的 Writer 写入。

建议您使用 Tunnel-SDK-BufferedWriter

下载数据时,Reader 也有类似机制,若长时间没有网络动作会断开连接,建议 Reader 过程连续进行,中间不穿插其他系统的接口。


>>快来点击免费下载《阿里云MaxCompute百问百答》了解更多详情!<<

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
2月前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之在使用MaxCompute的Java SDK创建函数时,出现找不到文件资源的情况,是BUG吗
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
40 0
|
23天前
|
分布式计算 DataWorks DataX
DataWorks产品使用合集之DataX的ODPSReader和Tunnel是两种不同的读取MC(原名ODPS)数据的方式吗
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
33 3
|
22天前
|
分布式计算 大数据 Java
MaxCompute产品使用合集之如何通过Java SDK下载
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
9天前
|
机器学习/深度学习 分布式计算 大数据
MaxCompute产品使用问题之当使用Tunnel API进行数据操作时,MaxCompute会根据什么进行相应的处理
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
22天前
|
分布式计算 大数据 数据处理
MaxCompute操作报错合集之在本地用tunnel命令上传excel表格到mc遇到报错: tunnel upload C:\Users***\Desktop\a.xlsx mc里的非分区表名 -s false;该怎么办
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
22天前
|
分布式计算 大数据 MaxCompute
MaxCompute产品使用合集之在Python SDK中,可以使用什么往表中写入数据
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
2月前
|
JavaScript Java Maven
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
9月前
|
API 开发工具 Android开发
解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录
解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录
186 0
|
2月前
|
安全 开发工具 Android开发
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
778 0
|
11天前
|
jenkins 持续交付 开发工具
Android使用Jenkins打包自动维护sdk版本号
Android使用Jenkins打包自动维护sdk版本号
15 0