Repository: incubator-apex-malhar Updated Branches: refs/heads/master bbfc22292 -> 08cb9d3b3
APEXMALHAR-2050 moved Spillable libraries under state Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/74ca9236 Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/74ca9236 Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/74ca9236 Branch: refs/heads/master Commit: 74ca92369e3bc5250938e55f2bc7bf6a5605bf98 Parents: bbfc222 Author: MalharJenkins <jenk...@datatorrent.com> Authored: Tue Apr 26 17:23:18 2016 +0530 Committer: Chandni Singh <csi...@apache.org> Committed: Tue Apr 26 14:30:06 2016 -0700 ---------------------------------------------------------------------- .../apex/malhar/lib/spillable/Spillable.java | 100 --------------- .../spillable/SpillableComplexComponent.java | 126 ------------------- .../apex/malhar/lib/spillable/package-info.java | 20 --- .../malhar/lib/state/spillable/Spillable.java | 100 +++++++++++++++ .../spillable/SpillableComplexComponent.java | 126 +++++++++++++++++++ .../lib/state/spillable/package-info.java | 20 +++ 6 files changed, 246 insertions(+), 246 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/74ca9236/library/src/main/java/org/apache/apex/malhar/lib/spillable/Spillable.java ---------------------------------------------------------------------- diff --git a/library/src/main/java/org/apache/apex/malhar/lib/spillable/Spillable.java b/library/src/main/java/org/apache/apex/malhar/lib/spillable/Spillable.java deleted file mode 100644 index 39966d7..0000000 --- a/library/src/main/java/org/apache/apex/malhar/lib/spillable/Spillable.java +++ /dev/null @@ -1,100 +0,0 @@ -/** - * 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 org.apache.apex.malhar.lib.spillable; - -import java.util.List; -import java.util.Map; -import java.util.Queue; - -import com.google.common.collect.ListMultimap; - -import com.datatorrent.api.Component; -import com.datatorrent.api.Context.OperatorContext; - -/** - * This is a marker interface for a spillable data structure. - */ -public interface Spillable -{ - /** - * This represents a spillable {@link java.util.List}. The underlying implementation - * of this list is similar to that of an {@link java.util.ArrayList}. User's that receive an - * implementation of this interface don't need to worry about propagating operator call-backs - * to the data structure. - * @param <T> The type of the data stored in the {@link SpillableArrayList}. - */ - interface SpillableArrayList<T> extends List<T> - { - } - - /** - * This represents a spillable {@link java.util.Map}. The underlying implementation - * of this map uses the serialized representation of the key object as a key. User's that receive an - * implementation of this interface don't need to worry about propagating operator call-backs - * to the data structure. - * @param <K> The type of the keys. - * @param <V> The type of the values. - */ - interface SpillableByteMap<K, V> extends Map<K, V> - { - } - - /** - * This represents a spillable {@link com.google.common.collect.ListMultimap} implementation. User's that receive an - * implementation of this interface don't need to worry about propagating operator call-backs - * to the data structure. - * @param <K> The type of the keys. - * @param <V> The type of the values. - */ - interface SpillableByteArrayListMultimap<K, V> extends ListMultimap<K, V> - { - } - - /** - * This represents a spillable {@link java.util.Queue} implementation. User's that receive an - * implementation of this interface don't need to worry about propagating operator call-backs - * to the data structure. - * @param <T> The type of the data stored in the queue. - */ - interface SpillableQueue<T> extends Queue<T> - { - } - - /** - * This represents a spillable data structure that needs to be aware of the operator - * callbacks. All concrete or abstract implementations of spillable data structures - * should implement this interface. A user working with an implementation of this interface needs - * to make sure that the {@link com.datatorrent.api.Operator} call-backs are propagated to it. - */ - interface SpillableComponent extends Component<OperatorContext>, Spillable - { - /** - * This signals that the parent {@link com.datatorrent.api.Operator}'s - * {@link com.datatorrent.api.Operator#beginWindow(long)} method has been called. - * @param windowId The next windowId of the parent operator. - */ - void beginWindow(long windowId); - - /** - * This signals that the parent {@link com.datatorrent.api.Operator}'s - * {@link com.datatorrent.api.Operator#endWindow()} method has been called. - */ - void endWindow(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/74ca9236/library/src/main/java/org/apache/apex/malhar/lib/spillable/SpillableComplexComponent.java ---------------------------------------------------------------------- diff --git a/library/src/main/java/org/apache/apex/malhar/lib/spillable/SpillableComplexComponent.java b/library/src/main/java/org/apache/apex/malhar/lib/spillable/SpillableComplexComponent.java deleted file mode 100644 index c5acbc5..0000000 --- a/library/src/main/java/org/apache/apex/malhar/lib/spillable/SpillableComplexComponent.java +++ /dev/null @@ -1,126 +0,0 @@ -/** - * 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 org.apache.apex.malhar.lib.spillable; - -import org.apache.apex.malhar.lib.spillable.Spillable.SpillableComponent; -import org.apache.apex.malhar.lib.utils.serde.Serde; - -import com.datatorrent.api.Component; -import com.datatorrent.api.Context.OperatorContext; - - -/** - * This is a composite component containing spillable data structures. This should be used as - * a component inside {@link com.datatorrent.api.Operator}s. - */ -public interface SpillableComplexComponent extends Component<OperatorContext>, SpillableComponent -{ - /** - * This is a method for creating a {@link SpillableArrayList}. This method - * auto-generates an identifier for the data structure. - * @param <T> The type of data stored in the {@link SpillableArrayList}. - * @param bucket The bucket that this {@link SpillableArrayList} will be spilled too. - * @param serde The Serializer/Deserializer to use for data stored in the {@link SpillableArrayList}. - * @return A {@link SpillableArrayList}. - */ - <T> SpillableArrayList<T> newSpillableArrayList(long bucket, Serde<T, byte[]> serde); - - /** - * This is a method for creating a {@link SpillableArrayList}. - * @param <T> The type of data stored in the {@link SpillableArrayList}. - * @param identifier The identifier for this {@link SpillableArrayList}. - * @param bucket The bucket that this {@link SpillableArrayList} will be spilled too. - * @param serde The Serializer/Deserializer to use for data stored in the {@link SpillableArrayList}. - * @return A {@link SpillableArrayList}. - */ - <T> SpillableArrayList<T> newSpillableArrayList(byte[] identifier, long bucket, Serde<T, byte[]> serde); - - /** - * This is a method for creating a {@link SpillableByteMap}. This method - * auto-generates an identifier for the data structure. - * @param <K> The type of the keys. - * @param <V> The type of the values. - * @param bucket The bucket that this {@link SpillableByteMap} will be spilled too. - * @param serdeKey The Serializer/Deserializer to use for the map's keys. - * @param serdeValue The Serializer/Deserializer to use for the map's values. - * @return A {@link SpillableByteMap}. - */ - <K, V> SpillableByteMap<K, V> newSpillableByteMap(long bucket, Serde<K, byte[]> serdeKey, - Serde<V, byte[]> serdeValue); - - /** - * This is a method for creating a {@link SpillableByteMap}. - * @param <K> The type of the keys. - * @param <V> The type of the values. - * @param identifier The identifier for this {@link SpillableByteMap}. - * @param bucket The bucket that this {@link SpillableByteMap} will be spilled too. - * @param serdeKey The Serializer/Deserializer to use for the map's keys. - * @param serdeValue The Serializer/Deserializer to use for the map's values. - * @return A {@link SpillableByteMap}. - */ - <K, V> SpillableByteMap<K, V> newSpillableByteMap(byte[] identifier, long bucket, - Serde<K, byte[]> serdeKey, Serde<V, byte[]> serdeValue); - - /** - * This is a method for creating a {@link SpillableByteArrayListMultimap}. This method - * auto-generates an identifier for the data structure. - * @param <K> The type of the keys. - * @param <V> The type of the values in the map's lists. - * @param bucket The bucket that this {@link SpillableByteArrayListMultimap} will be spilled too. - * @param serdeKey The Serializer/Deserializer to use for the map's keys. - * @param serdeValue The Serializer/Deserializer to use for the values in the map's lists. - * @return A {@link SpillableByteArrayListMultimap}. - */ - <K, V> SpillableByteArrayListMultimap<K, V> newSpillableByteArrayListMultimap(long bucket, Serde<K, - byte[]> serdeKey, Serde<V, byte[]> serdeValue); - - /** - * This is a method for creating a {@link SpillableByteArrayListMultimap}. - * @param <K> The type of the keys. - * @param <V> The type of the values in the map's lists. - * @param identifier The identifier for this {@link SpillableByteArrayListMultimap}. - * @param bucket The bucket that this {@link SpillableByteArrayListMultimap} will be spilled too. - * @param serdeKey The Serializer/Deserializer to use for the map's keys. - * @param serdeValue The Serializer/Deserializer to use for the values in the map's lists. - * @return A {@link SpillableByteArrayListMultimap}. - */ - <K, V> SpillableByteArrayListMultimap<K, V> newSpillableByteArrayListMultimap(byte[] identifier, long bucket, - Serde<K, byte[]> serdeKey, - Serde<V, byte[]> serdeValue); - - /** - * This is a method for creating a {@link SpillableQueue}. This method - * auto-generates an identifier for the data structure. - * @param <T> The type of the data stored in the {@link SpillableQueue}. - * @param bucket The bucket that this {@link SpillableQueue} will be spilled too. - * @param serde The Serializer/Deserializer to use for data stored in the {@link SpillableQueue}. - * @return A {@link SpillableQueue}. - */ - <T> SpillableQueue<T> newSpillableQueue(long bucket, Serde<T, byte[]> serde); - - /** - * This is a method for creating a {@link SpillableQueue}. - * @param <T> The type of the data stored in the {@link SpillableQueue}. - * @param identifier The identifier for this {@link SpillableByteArrayListMultimap}. - * @param bucket The bucket that this {@link SpillableQueue} will be spilled too. - * @param serde The Serializer/Deserializer to use for data stored in the {@link SpillableQueue}. - * @return A {@link SpillableQueue}. - */ - <T> SpillableQueue<T> newSpillableQueue(byte[] identifier, long bucket, Serde<T, byte[]> serde); -} http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/74ca9236/library/src/main/java/org/apache/apex/malhar/lib/spillable/package-info.java ---------------------------------------------------------------------- diff --git a/library/src/main/java/org/apache/apex/malhar/lib/spillable/package-info.java b/library/src/main/java/org/apache/apex/malhar/lib/spillable/package-info.java deleted file mode 100644 index 44de451..0000000 --- a/library/src/main/java/org/apache/apex/malhar/lib/spillable/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/** - * 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. - */ -@org.apache.hadoop.classification.InterfaceStability.Unstable -package org.apache.apex.malhar.lib.spillable; http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/74ca9236/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/Spillable.java ---------------------------------------------------------------------- diff --git a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/Spillable.java b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/Spillable.java new file mode 100644 index 0000000..bc7a6d5 --- /dev/null +++ b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/Spillable.java @@ -0,0 +1,100 @@ +/** + * 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 org.apache.apex.malhar.lib.state.spillable; + +import java.util.List; +import java.util.Map; +import java.util.Queue; + +import com.google.common.collect.ListMultimap; + +import com.datatorrent.api.Component; +import com.datatorrent.api.Context.OperatorContext; + +/** + * This is a marker interface for a spillable data structure. + */ +public interface Spillable +{ + /** + * This represents a spillable {@link java.util.List}. The underlying implementation + * of this list is similar to that of an {@link java.util.ArrayList}. User's that receive an + * implementation of this interface don't need to worry about propagating operator call-backs + * to the data structure. + * @param <T> The type of the data stored in the {@link SpillableArrayList}. + */ + interface SpillableArrayList<T> extends List<T> + { + } + + /** + * This represents a spillable {@link java.util.Map}. The underlying implementation + * of this map uses the serialized representation of the key object as a key. User's that receive an + * implementation of this interface don't need to worry about propagating operator call-backs + * to the data structure. + * @param <K> The type of the keys. + * @param <V> The type of the values. + */ + interface SpillableByteMap<K, V> extends Map<K, V> + { + } + + /** + * This represents a spillable {@link com.google.common.collect.ListMultimap} implementation. User's that receive an + * implementation of this interface don't need to worry about propagating operator call-backs + * to the data structure. + * @param <K> The type of the keys. + * @param <V> The type of the values. + */ + interface SpillableByteArrayListMultimap<K, V> extends ListMultimap<K, V> + { + } + + /** + * This represents a spillable {@link java.util.Queue} implementation. User's that receive an + * implementation of this interface don't need to worry about propagating operator call-backs + * to the data structure. + * @param <T> The type of the data stored in the queue. + */ + interface SpillableQueue<T> extends Queue<T> + { + } + + /** + * This represents a spillable data structure that needs to be aware of the operator + * callbacks. All concrete or abstract implementations of spillable data structures + * should implement this interface. A user working with an implementation of this interface needs + * to make sure that the {@link com.datatorrent.api.Operator} call-backs are propagated to it. + */ + interface SpillableComponent extends Component<OperatorContext>, Spillable + { + /** + * This signals that the parent {@link com.datatorrent.api.Operator}'s + * {@link com.datatorrent.api.Operator#beginWindow(long)} method has been called. + * @param windowId The next windowId of the parent operator. + */ + void beginWindow(long windowId); + + /** + * This signals that the parent {@link com.datatorrent.api.Operator}'s + * {@link com.datatorrent.api.Operator#endWindow()} method has been called. + */ + void endWindow(); + } +} http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/74ca9236/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableComplexComponent.java ---------------------------------------------------------------------- diff --git a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableComplexComponent.java b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableComplexComponent.java new file mode 100644 index 0000000..d157ba0 --- /dev/null +++ b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableComplexComponent.java @@ -0,0 +1,126 @@ +/** + * 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 org.apache.apex.malhar.lib.state.spillable; + +import org.apache.apex.malhar.lib.state.spillable.Spillable.SpillableComponent; +import org.apache.apex.malhar.lib.utils.serde.Serde; + +import com.datatorrent.api.Component; +import com.datatorrent.api.Context.OperatorContext; + + +/** + * This is a composite component containing spillable data structures. This should be used as + * a component inside {@link com.datatorrent.api.Operator}s. + */ +public interface SpillableComplexComponent extends Component<OperatorContext>, SpillableComponent +{ + /** + * This is a method for creating a {@link SpillableArrayList}. This method + * auto-generates an identifier for the data structure. + * @param <T> The type of data stored in the {@link SpillableArrayList}. + * @param bucket The bucket that this {@link SpillableArrayList} will be spilled too. + * @param serde The Serializer/Deserializer to use for data stored in the {@link SpillableArrayList}. + * @return A {@link SpillableArrayList}. + */ + <T> SpillableArrayList<T> newSpillableArrayList(long bucket, Serde<T, byte[]> serde); + + /** + * This is a method for creating a {@link SpillableArrayList}. + * @param <T> The type of data stored in the {@link SpillableArrayList}. + * @param identifier The identifier for this {@link SpillableArrayList}. + * @param bucket The bucket that this {@link SpillableArrayList} will be spilled too. + * @param serde The Serializer/Deserializer to use for data stored in the {@link SpillableArrayList}. + * @return A {@link SpillableArrayList}. + */ + <T> SpillableArrayList<T> newSpillableArrayList(byte[] identifier, long bucket, Serde<T, byte[]> serde); + + /** + * This is a method for creating a {@link SpillableByteMap}. This method + * auto-generates an identifier for the data structure. + * @param <K> The type of the keys. + * @param <V> The type of the values. + * @param bucket The bucket that this {@link SpillableByteMap} will be spilled too. + * @param serdeKey The Serializer/Deserializer to use for the map's keys. + * @param serdeValue The Serializer/Deserializer to use for the map's values. + * @return A {@link SpillableByteMap}. + */ + <K, V> SpillableByteMap<K, V> newSpillableByteMap(long bucket, Serde<K, byte[]> serdeKey, + Serde<V, byte[]> serdeValue); + + /** + * This is a method for creating a {@link SpillableByteMap}. + * @param <K> The type of the keys. + * @param <V> The type of the values. + * @param identifier The identifier for this {@link SpillableByteMap}. + * @param bucket The bucket that this {@link SpillableByteMap} will be spilled too. + * @param serdeKey The Serializer/Deserializer to use for the map's keys. + * @param serdeValue The Serializer/Deserializer to use for the map's values. + * @return A {@link SpillableByteMap}. + */ + <K, V> SpillableByteMap<K, V> newSpillableByteMap(byte[] identifier, long bucket, + Serde<K, byte[]> serdeKey, Serde<V, byte[]> serdeValue); + + /** + * This is a method for creating a {@link SpillableByteArrayListMultimap}. This method + * auto-generates an identifier for the data structure. + * @param <K> The type of the keys. + * @param <V> The type of the values in the map's lists. + * @param bucket The bucket that this {@link SpillableByteArrayListMultimap} will be spilled too. + * @param serdeKey The Serializer/Deserializer to use for the map's keys. + * @param serdeValue The Serializer/Deserializer to use for the values in the map's lists. + * @return A {@link SpillableByteArrayListMultimap}. + */ + <K, V> SpillableByteArrayListMultimap<K, V> newSpillableByteArrayListMultimap(long bucket, Serde<K, + byte[]> serdeKey, Serde<V, byte[]> serdeValue); + + /** + * This is a method for creating a {@link SpillableByteArrayListMultimap}. + * @param <K> The type of the keys. + * @param <V> The type of the values in the map's lists. + * @param identifier The identifier for this {@link SpillableByteArrayListMultimap}. + * @param bucket The bucket that this {@link SpillableByteArrayListMultimap} will be spilled too. + * @param serdeKey The Serializer/Deserializer to use for the map's keys. + * @param serdeValue The Serializer/Deserializer to use for the values in the map's lists. + * @return A {@link SpillableByteArrayListMultimap}. + */ + <K, V> SpillableByteArrayListMultimap<K, V> newSpillableByteArrayListMultimap(byte[] identifier, long bucket, + Serde<K, byte[]> serdeKey, + Serde<V, byte[]> serdeValue); + + /** + * This is a method for creating a {@link SpillableQueue}. This method + * auto-generates an identifier for the data structure. + * @param <T> The type of the data stored in the {@link SpillableQueue}. + * @param bucket The bucket that this {@link SpillableQueue} will be spilled too. + * @param serde The Serializer/Deserializer to use for data stored in the {@link SpillableQueue}. + * @return A {@link SpillableQueue}. + */ + <T> SpillableQueue<T> newSpillableQueue(long bucket, Serde<T, byte[]> serde); + + /** + * This is a method for creating a {@link SpillableQueue}. + * @param <T> The type of the data stored in the {@link SpillableQueue}. + * @param identifier The identifier for this {@link SpillableByteArrayListMultimap}. + * @param bucket The bucket that this {@link SpillableQueue} will be spilled too. + * @param serde The Serializer/Deserializer to use for data stored in the {@link SpillableQueue}. + * @return A {@link SpillableQueue}. + */ + <T> SpillableQueue<T> newSpillableQueue(byte[] identifier, long bucket, Serde<T, byte[]> serde); +} http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/74ca9236/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/package-info.java ---------------------------------------------------------------------- diff --git a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/package-info.java b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/package-info.java new file mode 100644 index 0000000..0eec387 --- /dev/null +++ b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/package-info.java @@ -0,0 +1,20 @@ +/** + * 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. + */ +@org.apache.hadoop.classification.InterfaceStability.Unstable +package org.apache.apex.malhar.lib.state.spillable;