而之所以之前配置了HADOOP_CONF_DIR, 是因为在执行Oryx的例子时,会使用bin/spark-submit –master yarn-client提交,此时如果没有配置HADOOP_CONF_DIR, 会报Exception in thread “main” java.lang.Exception: When running with master ‘yarn-client’ either HADOOP_CONF_DIR or YARN_CONF_DIR must be set in the environment.错误。
for (final ShardIterator shardIt : shardsIts) { shardIndex++; final ShardRouting shard = shardIt.nextOrNull(); if (shard != null) { performFirstPhase(shardIndex, shardIt, shard); } else { // really, no shards active in this group onFirstPhaseResult(shardIndex, null, null, shardIt, new NoShardAvailableActionException(shardIt.shardId())); } }
对每一个shard调用performFirstPhase,
查看performFirstPhase, 最终会调用sendExecuteFirstPhase,并添加了ActionListener, 如果成功则执行onResponse里的onFirstPhaseResult, 在onFirstPhaseResult里有个判断, if (xTotalOps == expectedTotalOps),当所有shard都执行完后,执行innerMoveToSecondPhase, 最终执行moveToSecondPhase
defdetail_route(methods=['get'], **kwargs): """ Used to mark a method on a ViewSet that should be routed for detail requests. """ defdecorator(func): func.bind_to_methods = methods func.detail = True func.kwargs = kwargs return func return decorator