【发布时间】: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 开了一张支持票