【问题标题】:java.lang.OutOfMemoryError Copying parquet blob to backup blob using snappy compressionjava.lang.OutOfMemoryError 使用 snappy 压缩将 parquet blob 复制到备份 blob
【发布时间】:2020-06-24 22:36:57
【问题描述】:

我正在使用复制数据活动将 Azure blob 存储(源)中的 parquet 文件备份到另一个 Azure blob 存储容器(接收器)。我为水槽选择了“快速”压缩。我正在使用 DefaultIntegrationRuntime(美国中南部) - 所以不是自托管的,这意味着我无法控制环境。我每天至少在几个文件上运行一次。有时,对于大小接近 1G 的源文件,我会收到以下错误。还有另一个大小为 1.6G 的源文件永远不会引发相同的错误。

    Code:21000,
    Message:Failure happened on 'Sink' side.
    ErrorCode=ParquetJavaInvocationException,
    '
        Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,
        Message=An error occurred when invoking java,
        message: java.lang.OutOfMemory
        Error:Direct buffer memory
        total entry:19
        java.nio.Bits.reserveMemory(Bits.java:658)
        java.nio.DirectByteBuffer.(DirectByteBuffer.java:123)
        java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:311)
        org.apache.parquet.hadoop.codec.SnappyCompressor.setInput(SnappyCompressor.java:97)
        org.apache.parquet.hadoop.codec.NonBlockedCompressorStream.write(NonBlockedCompressorStream.java:48)
        org.apache.parquet.bytes.CapacityByteArrayOutputStream.writeToOutput(CapacityByteArrayOutputStream.java:219)
        org.apache.parquet.bytes.CapacityByteArrayOutputStream.writeTo(CapacityByteArrayOutputStream.java:239)
        org.apache.parquet.bytes.BytesInput$CapacityBAOSBytesInput.writeAllTo(BytesInput.java:392)
        org.apache.parquet.bytes.BytesInput$SequenceBytesIn.writeAllTo(BytesInput.java:283)
        org.apache.parquet.hadoop.CodecFactory$HeapBytesCompressor.compress(CodecFactory.java:165)
        org.apache.parquet.hadoop.ColumnChunkPageWriteStore$ColumnChunkPageWriter.writePage(ColumnChunkPageWriteStore.java:98)
        org.apache.parquet.column.impl.ColumnWriterV1.writePage(ColumnWriterV1.java:148)
        org.apache.parquet.column.impl.ColumnWriterV1.flush(ColumnWriterV1.java:236)
        org.apache.parquet.column.impl.ColumnWriteStoreV1.flush(ColumnWriteStoreV1.java:122)
        org.apache.parquet.hadoop.InternalParquetRecordWriter.flushRowGroupToStore(InternalParquetRecordWriter.java:169)
        org.apache.parquet.hadoop.InternalParquetRecordWriter.checkBlockSizeReached(InternalParquetRecordWriter.java:143)
        org.apache.parquet.hadoop.InternalParquetRecordWriter.write(InternalParquetRecordWriter.java:125)
        org.apache.parquet.hadoop.ParquetWriter.write(ParquetWriter.java:292)
        com.microsoft.datatransfer.bridge.parquet.ParquetBatchWriter.addRows(ParquetBatchWriter.java:61)
        .,
        Source=Microsoft.DataTransfer.Richfile.ParquetTransferPlugin,
    '
    '
        Type=Microsoft.DataTransfer.Richfile.JniExt.JavaBridgeException,
        Message=,
        Source=Microsoft.DataTransfer.Richfile.HiveOrcBridge,
    ',
    EventType:0,
    Category:5,
    Data:{FailureInitiator:Sink},
    MsgId:null,
    ExceptionType:null,
    Source:null,
    StackTrace:null,
    InnerEventInfos:[]

我尝试将 DIU 提高到 8,但运行时只使用了 4,我仍然得到错误。我该如何调试呢?

【问题讨论】:

  • 我用 MS 开了一张支持票

标签: azure-data-factory


【解决方案1】:

来自微软支持:

我正在与 ADF 产品组 (PG) 合作寻找解决方案 随机失败的复制活动问题。我目前开了一个 我的 ADF PG 的事故单,他们告诉我这是已知的 导致间歇性故障的问题 使用 snappy 压缩/解压缩,有时使用您的数据。

所以,最近我们发布了一个修复程序,但它尚未在 后端...

我们的 ADF PG 已为您启用该功能。您可以...吗 请运行您的工作,如果您仍然发现任何问题,请告诉我。

该错误是如此断断续续,在过去几天后才发生错误。我会在几周后报告结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 2016-03-31
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    • 2013-03-21
    相关资源
    最近更新 更多