All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.aliyun.odps.table.configuration.WriterOptions Maven / Gradle / Ivy

The newest version!
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

package com.aliyun.odps.table.configuration;

import com.aliyun.odps.commons.util.RetryStrategy;
import com.aliyun.odps.table.DataFormat;
import com.aliyun.odps.table.enviroment.EnvironmentSettings;
import com.aliyun.odps.table.utils.ArrowUtils;
import com.aliyun.odps.table.utils.Preconditions;
import org.apache.arrow.memory.BufferAllocator;

import java.util.Optional;

import static com.aliyun.odps.table.utils.ConfigConstants.DEFAULT_BUFFERED_ROW_COUNT;
import static com.aliyun.odps.table.utils.ConfigConstants.DEFAULT_CHUNK_SIZE;

public class WriterOptions {

    private RetryStrategy retryStrategy;
    private int bufferedRowCount; // for buffered writer
    private BufferAllocator bufferAllocator;
    private EnvironmentSettings settings;
    private int chunkSize;
    private CompressionCodec compressionCodec;
    private DataFormat dataFormat;
    private long maxBlockNumber;

    public WriterOptions() {
        this.retryStrategy = new RetryStrategy();
        this.bufferedRowCount = DEFAULT_BUFFERED_ROW_COUNT;
        this.bufferAllocator = ArrowUtils.getDefaultRootAllocator();
        this.chunkSize = DEFAULT_CHUNK_SIZE;
        this.compressionCodec = CompressionCodec.NO_COMPRESSION;
        this.dataFormat = ArrowUtils.getDefaultDataFormat();
        this.maxBlockNumber = -1L;
    }

    public int getBufferedRowCount() {
        return bufferedRowCount;
    }

    public BufferAllocator getBufferAllocator() {
        return bufferAllocator;
    }

    public RetryStrategy getRetryStrategy() {
        return retryStrategy;
    }

    public EnvironmentSettings getSettings() {
        return settings;
    }

    public int getChunkSize() {
        return chunkSize;
    }

    public DataFormat getDataFormat() {
        return dataFormat;
    }

    public CompressionCodec getCompressionCodec() {
        return compressionCodec;
    }

    public Optional maxBlockNumber() {
        return maxBlockNumber > 0 ?
                Optional.of(maxBlockNumber) : Optional.empty();
    }

    public static WriterOptions.Builder newBuilder() {
        return new Builder();
    }

    public static class Builder {

        private final WriterOptions writerOptions = new WriterOptions();

        public WriterOptions.Builder withBufferedRowCount(int bufferSize) {
            Preconditions.checkInteger(bufferSize, 1, "Buffered row count");
            this.writerOptions.bufferedRowCount = bufferSize;
            return this;
        }

        public WriterOptions.Builder withRetryStrategy(RetryStrategy retryStrategy) {
            Preconditions.checkNotNull(retryStrategy, "Retry strategy");
            this.writerOptions.retryStrategy = retryStrategy;
            return this;
        }

        public WriterOptions.Builder withBufferAllocator(BufferAllocator allocator) {
            Preconditions.checkNotNull(allocator, "Buffer allocator");
            this.writerOptions.bufferAllocator = allocator;
            return this;
        }

        public WriterOptions.Builder withSettings(EnvironmentSettings settings) {
            this.writerOptions.settings = settings;
            return this;
        }

        public WriterOptions.Builder withChunkSize(int chunkSize) {
            Preconditions.checkInteger(chunkSize, 1500 - 4, "Chunk size");
            this.writerOptions.chunkSize = chunkSize;
            return this;
        }

        public WriterOptions.Builder withDataFormat(DataFormat dataFormat) {
            Preconditions.checkNotNull(dataFormat, "Data format");
            this.writerOptions.dataFormat = dataFormat;
            return this;
        }

        public WriterOptions.Builder withCompressionCodec(CompressionCodec codec) {
            this.writerOptions.compressionCodec = codec;
            return this;
        }

        public WriterOptions.Builder withMaxBlockNumber(long maxBlockNumber) {
            Preconditions.checkLong(maxBlockNumber, 1, "MaxBlockNumber");
            this.writerOptions.maxBlockNumber = maxBlockNumber;
            return this;
        }

        public WriterOptions build() {
            Preconditions.checkNotNull(writerOptions.settings,
                    "Environment settings", "required");
            return this.writerOptions;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy