VERTEX_ID
- Vertex ID 类型VERTEX_VALUE
- Vertex Value 类型EDGE_VALUE
- Edge Value 类型MESSAGE
- Message 类型public abstract class WorkerContext<VERTEX_ID extends WritableComparable,VERTEX_VALUE extends Writable,EDGE_VALUE extends Writable,MESSAGE extends Writable> extends Object
构造器和说明 |
---|
WorkerContext() |
限定符和类型 | 方法和说明 |
---|---|
abstract Writable |
getComputeValue()
获取当前 Worker 的计算对象,每轮开始时初始化,结束时发送给 Master。
|
abstract Configuration |
getConfiguration()
获取作业配置.
|
abstract Counter |
getCounter(Enum<?> name)
获取给定名称的Counter对象,name为
Enum |
abstract Counter |
getCounter(String group,
String name)
获取给定组名和名称的 Counter 对象.
|
<VALUE extends Writable> |
getLastAggregatedValue()
默认获取上一轮迭代结束时编号0的 Aggregator 的结果.
|
abstract <VALUE extends Writable> |
getLastAggregatedValue(int aggregatorIndex)
获取上一轮迭代结束时给定编号 Aggregator 的结果.
|
abstract long |
getMaxIteration()
获取最大迭代次数,默认 -1,小于或等于 0 时表示最大迭代次数不作为作业终止条件.
|
abstract int |
getNumWorkers()
获取 Worker 数目.
|
abstract TableInfo |
getOutputTable()
获取默认输出的表信息.
|
abstract TableInfo |
getOutputTable(String label)
获取给定输出标签的表信息.
|
abstract TableInfo |
getResourceTable(String resourceName)
获取表类型资源对应的表信息,包括Project、表名称、分区等信息.
|
abstract long |
getSuperstep()
获取当前超步,即第几次迭代,从 0 开始计数.
|
abstract long |
getTotalNumEdges()
获取所有边数量,所有 Worker 负责的边数之和.
|
abstract long |
getTotalNumVertices()
获取所有点数量,所有 Worker 负责的点数之和.
|
abstract int |
getWorkerId()
获取当前 Worker 的编号,从 0 开始计数.
|
abstract long |
getWorkerNumEdges()
获取当前 Worker 负责的边数量.
|
abstract long |
getWorkerNumVertices()
获取当前 Worker 负责的点数量.
|
abstract Writable |
getWorkerValue()
获取当前 Worker 的共享对象.
|
abstract void |
progress()
向 ODPS Graph 框架报告进度.
|
abstract Iterable<byte[]> |
readCacheArchive(String resourceName)
读取压缩档案类型资源,返回解压后的所有文件内容的迭代器.
|
abstract Iterable<byte[]> |
readCacheArchive(String resourceName,
String relativePath)
读取压缩档案类型资源,可以传入一个相对路径读取部分文件.
|
abstract Iterable<BufferedInputStream> |
readCacheArchiveAsStream(String resourceName)
读取压缩档案类型资源,返回 BufferedInputStream 的迭代器.
|
abstract Iterable<BufferedInputStream> |
readCacheArchiveAsStream(String resourceName,
String relativePath)
读取压缩档案类型资源,返回 BufferedInputStream 的迭代器.
|
abstract byte[] |
readCacheFile(String resourceName)
读取文件类型资源,一次全部读取到内存,返回 byte[].
|
abstract BufferedInputStream |
readCacheFileAsStream(String resourceName)
读取文件类型资源,返回一个带缓存的输入流.
|
abstract Iterable<WritableRecord> |
readResourceTable(String resourceName)
读取表类型资源,ODPS的小表(Table)也可以作为资源,大小限制参见ODPS的相关文档.
|
abstract void |
write(String label,
Writable... fieldVals)
写记录到给定标签输出.
|
abstract void |
write(Writable... fieldVals)
写记录到默认输出.
|
public abstract Configuration getConfiguration()
GraphJob
设置的配置参数可以从作业配置中读取
注意:这里只能get配置参数,而不能set配置参数
public abstract Writable getWorkerValue()
WorkerComputer}
public abstract int getWorkerId()
public abstract int getNumWorkers()
public abstract long getSuperstep()
public abstract long getMaxIteration()
JobConf.setMaxIteration(int)
public abstract long getWorkerNumVertices()
public abstract long getWorkerNumEdges()
public abstract long getTotalNumVertices()
public abstract long getTotalNumEdges()
public abstract Counter getCounter(Enum<?> name)
Enum
name
- Counter名称public abstract Counter getCounter(String group, String name)
group
- Counter 组名name
- Counter 名public abstract <VALUE extends Writable> VALUE getLastAggregatedValue(int aggregatorIndex)
对于第一轮迭代(超步为0),调用本方法返回 Aggregator.createStartupValue(WorkerContext)
创建的值, Aggregator.createStartupValue(WorkerContext)
默认返回 null,用户可以
override.
VALUE
- Aggregator 值类型aggregatorIndex
- Aggregator编号,起始为 0Aggregator.aggregate(Writable, Object)
,
JobConf.setAggregatorClass(Class...)
public <VALUE extends Writable> VALUE getLastAggregatedValue()
对于第一轮迭代(超步为0),调用本方法返回 Aggregator.createStartupValue(WorkerContext)
创建的值, Aggregator.createStartupValue(WorkerContext)
默认返回 null,用户可以
override.
VALUE
- Aggregator 值类型Aggregator.aggregate(Writable, Object)
,
JobConf.setAggregatorClass(Class...)
public abstract TableInfo getOutputTable() throws IOException
IOException
public abstract TableInfo getOutputTable(String label) throws IOException
label
- 输出标签IOException
public abstract void write(Writable... fieldVals) throws IOException
fieldVals
- 待写出的记录值IOException
JobConf.addOutput(TableInfo)
public abstract void write(String label, Writable... fieldVals) throws IOException
label
- 输出标签fieldVals
- 待写出的记录值IOException
GraphJob#addOutput(TableInfo, String)
public abstract byte[] readCacheFile(String resourceName) throws IOException
如果资源文件比较大,应该使用readCacheFileAsStream(String)
获得一个带缓存的输入流,支持边读边处理,防止Java内存溢出
使用文件类型资源步骤:
JobConf.addCacheResources(String)
)
资源文件在运行时会下载到所在的节点机器上并缓存,类似于Hadoop的DistributedCache
resourceName
- 资源名称IOException
- 资源未声明、资源类型不匹配以及其他读取错误抛异常readCacheFileAsStream(String)
public abstract BufferedInputStream readCacheFileAsStream(String resourceName) throws IOException
readCacheFileAsStream
支持边读边处理(常见的场景是读取一行处理一行),适合读取比较大的文件资源,防止Java内存溢出,如果文件资源比较小,也可以直接使用
readCacheFile(String)
方法一次性读取到内存。
使用文件类型资源步骤类似readCacheFile(String)
resourceName
- 资源名称IOException
- 资源未声明、资源类型不匹配以及其他读取错误抛异常readCacheFile(String)
public abstract Iterable<byte[]> readCacheArchive(String resourceName) throws IOException
如果文件内容比较大,应该使用 readCacheArchiveAsStream(String)
,支持边读边处理,防止Java内存溢出。
使用压缩档案类型资源步骤:
JobConf.addCacheResources(String)
)
资源压缩包在Worker运行时会下载到所在的节点机器上并缓存,类似于Hadoop的DistributedCache
resourceName
- 资源名称IOException
- 资源未声明、资源类型不匹配以及其他读取错误抛异常readCacheArchiveAsStream(String)
public abstract Iterable<byte[]> readCacheArchive(String resourceName, String relativePath) throws IOException
与readCacheArchive(String)
不同的是可以传入一个相对路径,用于读取压缩包里的部分文件的内容,更多说明见
readCacheArchive(String)
方法
读取压缩包内子目录的代码示例:
Iterable<byte[]> iter = context.readCacheArchiveAsStream(RESOURCE_ARCHIVE, "subdir/*"); for (byte[] content : iter) { }
resourceName
- 资源名称relativePath
- 读取资源的相对路径IOException
- 资源未声明、资源类型不匹配以及其他读取错误抛异常readCacheArchiveAsStream(String)
public abstract Iterable<BufferedInputStream> readCacheArchiveAsStream(String resourceName) throws IOException
resourceName
- 资源名称IOException
- 资源未声明、资源类型不匹配以及其他读取错误抛异常readCacheArchive(String)
public abstract Iterable<BufferedInputStream> readCacheArchiveAsStream(String resourceName, String relativePath) throws IOException
resourceName
- 资源名称relativePath
- 读取资源的相对路径IOException
- 资源未声明、资源类型不匹配以及其他读取错误抛异常readCacheArchive(String, String)
public abstract Iterable<WritableRecord> readResourceTable(String resourceName) throws IOException
使用表类型资源步骤:
JobConf.addCacheResources(String)
)
代码示例:
Iterable<WritableRecord> iter = context.readResourceTable("res_table"); for (WritableRecord record : iter) { // handle record }
resourceName
- 表类型资源名称IOException
- 资源未声明、资源类型不匹配以及其他错误抛异常public abstract TableInfo getResourceTable(String resourceName) throws IOException
resourceName
- 表类型资源名称IOException
- 资源未声明、资源类型不匹配以及其他错误抛异常public abstract void progress()
public abstract Writable getComputeValue()
MasterComputer
中能获取到各个 Worker 的 ComputeValue.Copyright © 2015 Alibaba Cloud Computing. All rights reserved.