@InterfaceAudience.Public @InterfaceStability.Unstable public final class RemoteIterators extends Object
其目标是使使用lambda表达式转换迭代器结果变得简单直接, 同时在此过程中不丢失统计信息,并能将操作链接在一起。
可关闭操作将通过包装其他RemoteIterators的RemoteIterators传递。 这是为了支持任何可以关闭以释放持有的连接、文件句柄等的迭代器。 除非客户端代码假设RemoteIterator实例可以被关闭, 否则这一功能不太可能被广泛使用。添加它是为了以受控方式采用此功能。
一个显著特点是
foreach(RemoteIterator, ConsumerRaisingIOE)
方法
会在调试级别记录迭代器提供的任何IOStatistics(如果提供了此类统计信息)。
如果日志未设置为调试级别,则不会尝试检索和记录,
因此除非记录器org.apache.hadoop.fs.functional.RemoteIterators
处于DEBUG级别,否则这是一个零成本功能。
修饰符和类型 | 方法和描述 |
---|---|
static <T> void |
cleanupRemoteIterator(org.apache.hadoop.fs.RemoteIterator<T> source)
在迭代后进行清理。
|
static <S> org.apache.hadoop.fs.RemoteIterator<S> |
关闭远程迭代器(org.apache.hadoop.fs.RemoteIterator<S> iterator,
Closeable toClose)
这会在源迭代器支持的Closeable.close()方法之外,额外添加一个关闭操作。
|
static <S> org.apache.hadoop.fs.RemoteIterator<S> |
filteringRemoteIterator(org.apache.hadoop.fs.RemoteIterator<S> iterator,
org.apache.hadoop.util.functional.FunctionRaisingIOE<? super S,Boolean> filter)
从RemoteIterator和过滤函数创建一个RemoteIterator,该函数对每个需要传递的元素返回true。
|
static <T> long |
foreach(org.apache.hadoop.fs.RemoteIterator<T> source,
org.apache.hadoop.util.functional.ConsumerRaisingIOE<? super T> consumer)
对RemoteIterator的所有值应用一个操作。
|
static <S> org.apache.hadoop.fs.RemoteIterator<S> |
haltableRemoteIterator(org.apache.hadoop.fs.RemoteIterator<S> iterator,
org.apache.hadoop.util.functional.CallableRaisingIOE<Boolean> continueWork)
用添加延续探针的迭代器包装一个迭代器。
|
static <S,T> org.apache.hadoop.fs.RemoteIterator<T> |
mappingRemoteIterator(org.apache.hadoop.fs.RemoteIterator<S> iterator,
org.apache.hadoop.util.functional.FunctionRaisingIOE<? super S,T> mapper)
从一个迭代器和一个转换函数创建迭代器。
|
static org.apache.hadoop.fs.RemoteIterator<Long> |
rangeExcludingIterator(long start,
long excludedFinish)
A remote iterator which simply counts up, stopping once the
value is greater than the value of
excludedFinish . |
static <T> org.apache.hadoop.fs.RemoteIterator<T> |
remoteIteratorFromArray(T[] array)
从数组创建一个远程迭代器。
|
static <T> org.apache.hadoop.fs.RemoteIterator<T> |
remoteIteratorFromIterable(Iterable<T> iterable)
从java.util.Iterable创建一个远程迭代器 - 例如
|
static <T> org.apache.hadoop.fs.RemoteIterator<T> |
remoteIteratorFromIterator(Iterator<T> iterator)
从java.util.Iterator创建一个远程迭代器。
|
static <T> org.apache.hadoop.fs.RemoteIterator<T> |
从单例创建远程迭代器(T singleton)
从单例创建一个迭代器。
|
static <T> T[] |
toArray(org.apache.hadoop.fs.RemoteIterator<T> source,
T[] a)
从RemoteIterator构建一个数组。
|
static <T> 列表<T> |
转换为列表(org.apache.hadoop.fs.RemoteIterator<T> source)
从RemoteIterator构建列表。
|
static <S,T> org.apache.hadoop.fs.RemoteIterator<T> |
类型转换远程迭代器(org.apache.hadoop.fs.RemoteIterator<S> iterator)
从一个RemoteIterator创建另一个RemoteIterator,在此过程中进行类型转换。
|
public staticorg.apache.hadoop.fs.RemoteIterator remoteIteratorFromSingleton(@Nullable T singleton)
T
- 类型singleton
- 实例public staticorg.apache.hadoop.fs.RemoteIterator remoteIteratorFromIterator(Iterator iterator)
T
- 类型iterator
- 迭代器public staticorg.apache.hadoop.fs.RemoteIterator remoteIteratorFromIterable(Iterable iterable)
T
- 类型iterable
- 可迭代对象public staticorg.apache.hadoop.fs.RemoteIterator remoteIteratorFromArray(T[] array)
T
- 类型array
- 数组public staticorg.apache.hadoop.fs.RemoteIteratormappingRemoteIterator(org.apache.hadoop.fs.RemoteIterator iterator, org.apache.hadoop.util.functional.FunctionRaisingIOE super S,T> mapper)
S
- 源类型T
- 结果类型iterator
- 源mapper
- 转换函数public staticorg.apache.hadoop.fs.RemoteIteratortypeCastingRemoteIterator(org.apache.hadoop.fs.RemoteIterator iterator)
S
- 源类型T
- 结果类型iterator
- 源public staticorg.apache.hadoop.fs.RemoteIteratorfilteringRemoteIterator(org.apache.hadoop.fs.RemoteIteratoriterator, org.apache.hadoop.util.functional.FunctionRaisingIOE super S,Boolean> filter)
元素在hasNext()方法中被过滤;如果不使用该方法,过滤将在next()
调用中按需进行。
S
- 类型iterator
- 源filter
- 过滤器public staticorg.apache.hadoop.fs.RemoteIteratorclosingRemoteIterator(org.apache.hadoop.fs.RemoteIteratoriterator, Closeable toClose)
S
- 源类型iterator
- 源迭代器toClose
- 需要额外关闭的对象public staticorg.apache.hadoop.fs.RemoteIteratorhaltableRemoteIterator(org.apache.hadoop.fs.RemoteIteratoriterator, org.apache.hadoop.util.functional.CallableRaisingIOE<Boolean> continueWork)
S
- 源类型iterator
- 源continueWork
- 如果返回false将触发快速停止的谓词public static org.apache.hadoop.fs.RemoteIterator<Long> rangeExcludingIterator(long start, long excludedFinish)
excludedFinish
的值就停止。
这主要用于测试或向TaskPool提交工作时。
相当于
for(long l = start, l < excludedFinish; l++) yield l;
start
- 起始值excludedFinish
- 排除的结束值public staticList toList(org.apache.hadoop.fs.RemoteIterator source) throws IOException
T
- 类型source
- 源迭代器IOException
- 如果源RemoteIterator抛出此异常public staticT[] toArray(org.apache.hadoop.fs.RemoteIterator source, T[] a) throws IOException
T
- 类型source
- 源迭代器a
- 目标数组;如果太小则会创建同类型的新数组IOException
- 如果源RemoteIterator抛出该异常public staticlong foreach(org.apache.hadoop.fs.RemoteIterator source, org.apache.hadoop.util.functional.ConsumerRaisingIOE super T> consumer) throws IOException
返回已处理的条目数,了解这一点很有用, 特别是在测试期间或向用户报告值时。
此操作不会在之后关闭迭代器。T
- 源类型source
- 迭代器源consumer
- 值的消费者IOException
- 如果源RemoteIterator或消费者抛出异常public staticvoid cleanupRemoteIterator(org.apache.hadoop.fs.RemoteIterator source)
T
- 源类型source
- 迭代器源版权所有 © 2024 Apache软件基金会。保留所有权利。