Class ContentCache
- java.lang.Object
-
- org.apache.iceberg.io.ContentCache
-
public class ContentCache extends java.lang.ObjectClass that provides file-content caching during reading.The file-content caching is initiated by calling
tryCache(FileIO, String, long). Given a FileIO, a file location string, and file length that is within allowed limit, ContentCache will return aContentCache.CachingInputFilethat is backed by the cache. CallingContentCache.CachingInputFile.newStream()will return aByteBufferInputStreambacked by list ofByteBufferfrom the cache if such file-content exist in the cache. If the file-content does not exist in the cache yet, a regular InputFile will be instantiated, read-ahead, and loaded into the cache before returning ByteBufferInputStream. The regular InputFile is also used as a fallback if cache loading fail.
-
-
Constructor Summary
Constructors Constructor Description ContentCache(long expireAfterAccessMs, long maxTotalBytes, long maxContentLength)Constructor for ContentCache class.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcleanUp()longestimatedCacheSize()longexpireAfterAccess()org.apache.iceberg.io.ContentCache.CacheEntryget(java.lang.String key, java.util.function.Function<java.lang.String,org.apache.iceberg.io.ContentCache.CacheEntry> mappingFunction)org.apache.iceberg.io.ContentCache.CacheEntrygetIfPresent(java.lang.String location)voidinvalidate(java.lang.String key)voidinvalidateAll()longmaxContentLength()longmaxTotalBytes()com.github.benmanes.caffeine.cache.stats.CacheStatsstats()java.lang.StringtoString()InputFiletryCache(FileIO io, java.lang.String location, long length)Try cache the file-content of file in the given location upon stream reading.
-
-
-
Constructor Detail
-
ContentCache
public ContentCache(long expireAfterAccessMs, long maxTotalBytes, long maxContentLength)Constructor for ContentCache class.- Parameters:
expireAfterAccessMs- controls the duration for which entries in the ContentCache are hold since last access. Must be greater or equal than 0. Setting 0 means cache entries expire only if it gets evicted due to memory pressure.maxTotalBytes- controls the maximum total amount of bytes to cache in ContentCache. Must be greater than 0.maxContentLength- controls the maximum length of file to be considered for caching. Must be greater than 0.
-
-
Method Detail
-
expireAfterAccess
public long expireAfterAccess()
-
maxContentLength
public long maxContentLength()
-
maxTotalBytes
public long maxTotalBytes()
-
stats
public com.github.benmanes.caffeine.cache.stats.CacheStats stats()
-
get
public org.apache.iceberg.io.ContentCache.CacheEntry get(java.lang.String key, java.util.function.Function<java.lang.String,org.apache.iceberg.io.ContentCache.CacheEntry> mappingFunction)
-
getIfPresent
public org.apache.iceberg.io.ContentCache.CacheEntry getIfPresent(java.lang.String location)
-
tryCache
public InputFile tryCache(FileIO io, java.lang.String location, long length)
Try cache the file-content of file in the given location upon stream reading.If length is longer than maximum length allowed by ContentCache, a regular
InputFileand no caching will be done for that file. Otherwise, this method will return aContentCache.CachingInputFilethat serve file reads backed by ContentCache.- Parameters:
io- a FileIO associated with the location.location- URL/path of a file accessible by io.length- the known length of such file.- Returns:
- a
ContentCache.CachingInputFileif length is within allowed limit. Otherwise, a regularInputFilefor given location.
-
invalidate
public void invalidate(java.lang.String key)
-
invalidateAll
public void invalidateAll()
-
cleanUp
public void cleanUp()
-
estimatedCacheSize
public long estimatedCacheSize()
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-