开发者社区 > 大数据与机器学习 > 大数据计算 MaxCompute > 正文

大数据计算MaxCompute pyodps中使用open_reader会不定时报错怎么办?

大数据计算MaxCompute pyodps中使用open_reader会不定时报 IncompleteRead 是怎么回事呢?Exception requests.packages.urllib3.exceptions.ProtocolError: ProtocolError('Connection broken: IncompleteRead(6584 bytes read, 1600 more expected)', IncompleteRead(6584 bytes read, 1600 more expected)) in 'odps.tunnel.io.reader_c.BaseTunnelRecordReader._set_string' ignored
Traceback (most recent call last):
File "", line 132, in
compute_save_WPP()
File "", line 59, in compute_save_WPP
for record in reader:
File "/usr/lib64/python2.7/site-packages/odps/models/instance.py", line 796, in iter
for record in self.read():
File "/usr/lib64/python2.7/site-packages/odps/models/instance.py", line 819, in read
for record in reader[::step]:
File "/usr/lib64/python2.7/site-packages/odps/readers.py", line 88, in _iter
record = next(self)
File "odps/tunnel/io/reader_c.pyx", line 428, in odps.tunnel.io.reader_c.TunnelRecordReader.next (odps/tunnel/io/reader_c.cpp:8049)
record = self.read()
File "odps/tunnel/io/reader_c.pyx", line 330, in odps.tunnel.io.reader_c.BaseTunnelRecordReader.read (odps/tunnel/io/reader_c.cpp:7529)
cpdef read(self):
File "odps/tunnel/io/reader_c.pyx", line 400, in odps.tunnel.io.reader_c.BaseTunnelRecordReader.read (odps/tunnel/io/reader_c.cpp:7442)
six.reraise(*self._last_error)
File "odps/tunnel/io/reader_c.pyx", line 165, in odps.tunnel.io.reader_c.BaseTunnelRecordReader._read_string (odps/tunnel/io/reader_c.cpp:3813)
val = self._reader.read_string()
File "odps/tunnel/pb/decoder_c.pyx", line 101, in odps.tunnel.pb.decoder_c.Decoder.read_string (odps/tunnel/pb/decoder_c.cpp:2800)
read_bytes = self._stream.read(size)
File "/usr/lib64/python2.7/site-packages/odps/tunnel/io/stream.py", line 248, in read
content = self._internal_read(size_left)
File "/usr/lib64/python2.7/site-packages/odps/tunnel/io/stream.py", line 274, in _internal_read
self._refill_buffer()
File "/usr/lib64/python2.7/site-packages/odps/tunnel/io/stream.py", line 295, in _refill_buffer
content = self._buffer_next_chunk()
File "/usr/lib64/python2.7/site-packages/odps/tunnel/io/stream.py", line 314, in _buffer_next_chunk
return self._read_block()
File "/usr/lib64/python2.7/site-packages/odps/tunnel/io/stream.py", line 319, in _read_block
content = self._input.raw.read(self.READ_BLOCK_SIZE, decode_content=True)
File "/usr/lib64/python2.7/site-packages/requests/packages/urllib3/response.py", line 324, in read
flush_decoder = True
File "/usr/lib64/python2.7/contextlib.py", line 35, in exit
self.gen.throw(type, value, traceback)
File "/usr/lib64/python2.7/site-packages/requests/packages/urllib3/response.py", line 250, in _error_catcher
raise ProtocolError('Connection broken: %r' % e, e)
ProtocolError: ('Connection broken: IncompleteRead(6584 bytes read, 1600 more expected)', IncompleteRead(6584 bytes read, 1600 more expected))2023-10-07 13:59:49 文件【Postman-win64-5.1.2-Setup.exe】发送成功。2023-10-09 10:52:04
cn-beijing-youzheng-d01

展开
收起
真的很搞笑 2023-10-18 23:11:17 185 0
3 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    这个问题可能是由于在读取数据时,连接被意外中断导致的。你可以尝试以下方法解决这个问题:

    1. 检查你的网络连接是否正常,确保你可以正常访问数据源。
    2. 尝试增加读取数据的缓冲区大小,以减少因连接中断导致的数据丢失。你可以在open_reader函数中设置buffer_size参数来实现这一点。例如:
    from odps import ODPS
    
    # 创建ODPS实例
    odps = ODPS(access_id, access_key, project)
    
    # 设置读取数据的缓冲区大小
    buffer_size = 1024 * 1024 * 10  # 10MB
    
    # 使用open_reader读取数据
    reader = odps.open_reader(table, columns, buffer_size=buffer_size)
    
    # 遍历数据
    for record in reader:
        # 处理数据
        pass
    
    1. 如果问题仍然存在,你可以尝试使用其他Python库(如pandas)来读取数据,看看是否能够正常读取。如果可以,那么问题可能出在MaxCompute的Python SDK上。
    2023-10-19 21:49:22
    赞同 展开评论 打赏
  • 这个错误信息通常表示在读取数据时发生了问题。可能的原因包括:

    1. 数据源的问题:可能是数据源的连接出现问题,或者数据源中的数据不完整。

    2. 网络问题:如果你的数据源位于远程服务器上,那么可能是网络连接出现了问题。

    3. 数据格式问题:可能是数据格式与你预期的格式不一致,导致读取数据时出现了错误。

    4. 系统资源问题:可能是系统的内存或磁盘空间不足,导致无法读取数据。

    你可以尝试以下步骤来解决这个问题:

    1. 检查数据源的连接是否正常。

    2. 检查网络连接是否正常。

    3. 检查数据的格式是否正确。

    4. 检查系统的内存和磁盘空间是否充足。

    2023-10-19 16:20:43
    赞同 展开评论 打赏
  • 这种报错一般是网络抖动,如果endpoint是公网,换成内网或者vpc 。
    再增加重试机制,没有其他办法,好像不是公有云的环境。 找驻场问问吧,此回答整理自钉群“MaxCompute开发者社区2群”

    2023-10-19 07:44:04
    赞同 展开评论 打赏

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

相关产品

  • 云原生大数据计算服务 MaxCompute
  • 相关电子书

    更多
    Data+AI时代大数据平台应该如何建设 立即下载
    大数据AI一体化的解读 立即下载
    极氪大数据 Serverless 应用实践 立即下载