は、誰もがregionCoprocessorがshell.iがステップ
Q
ステップ
0
によってコプロセッサのステップをロードする方法
A
答えて
1
以下の手順に従ってください読み込みに関する適切な情報を取得し、事前にCoprocessor.Thanksを展開することはできませんトラフロードする方法を説明しなければならないことができますステップ1:インターフェイスを作成し、org.apache.hadoop.hbase.ipc.CoprocessorProtocol
ステップ2拡張:は
を作っているあなたはコプロセッサ呼び出した後に実行したいインタフェースのメソッドを定義します。ステップ3:この例で
:以下の例をご覧ください必要なすべてのパラメータ
でHTable.coprocessorExec()
メソッドを呼び出します。はHTable
ステップ4のインスタンスを作成します。登録番号が興味のある範囲内にある学生のリストを取得しようとしています。
作成インタフェースプロトコル:
public interface CoprocessorTestProtocol extends org.apache.hadoop.hbase.ipc.CoprocessorProtocol{
List<Student> getStudentList(byte[] startRegistrationNumber, byte[] endRegistrationNumber) throws IOException;
}
サンプルStudentクラス:
public class Student implements Serializable{
byte[] registrationNumber;
String name;
public void setRegistrationNumber(byte[] registrationNumber){
this.registrationNumber = registrationNumber;
}
public byte[] getRegistrationNumber(){
return this.registrationNumber;
}
public void setName(String name){
this.name = name;
}
public int getName(){
return this.name;
}
public String toString(){
return "Student[ registration number = " + Bytes.toInt(this.getRegistrationNumber()) + " name = " + this.getName() + " ]"
}
}
モデルクラス: [HBaseのからデータを取得するためのビジネスロジックが書かれている]
public class MyModel extends org.apache.hadoop.hbase.coprocessor.BaseEndpointCoprocessor implements CoprocessorTestProtocol{
@Override
List<Student> getStudentList(byte[] startRegistrationNumber, byte[] endRegistrationNumber){
Scan scan = new Scan();
scan.setStartRow(startRegistrationNumber);
scan.setStopRow(endRegistrationNumber);
InternalScanner scanner = ((RegionCoprocessorEnvironment) getEnvironment()).getRegion().getScanner(scan);
List<KeyValue> currentTempObj = new ArrayList<KeyValue>();
List<Student> studentList = new ArrayList<Student>();
try{
Boolean hasNext = false;
Student student;
do{
currentTempObj.clear();
hasNext = scanner.next(currentTempObj);
if(!currentTempObj.isEmpty()){
student = new Student();
for(KeyValue keyValue: currentTempObj){
bytes[] qualifier = keyValue.getQualifier();
if(Arrays.equals(qualifier, Bytes.toBytes("registrationNumber")))
student.setRegistrationNumber(keyValue.getValue());
else if(Arrays.equals(qualifier, Bytes.toBytes("name")))
student.setName(Bytes.toString(keyValue.getValue()));
}
StudentList.add(student);
}
}while(hasNext);
}catch (Exception e){
// catch the exception the way you want
}
finally{
scanner.close();
}
}
}
Clientクラス: [コプロセッサへの呼び出しが行われる場所]
public class MyClient{
if (args.length < 2) {
System.out.println("Usage : startRegistrationNumber endRegistrationNumber");
return;
}
public List<Student> displayStudentInfo(int startRegistrationNumber, int endRegistrationNumber){
final byte[] startKey=Bytes.toBytes(startRegistrationNumber);
final byte[] endKey=Bytes.toBytes(endRegistrationNumber);
String zkPeers = SystemInfo.getHBaseZkConnectString();
Configuration configuration=HBaseConfiguration.create();
configuration.set(HConstants.ZOOKEEPER_QUORUM, zkPeers);
HTableInterface table = new HTable(configuration, TABLE_NAME);
Map<byte[],List<Student>> allRegionOutput;
allRegionOutput = table.coprocessorExec(CoprocessorTestProtocol.class, startKey,endKey,
new Batch.Call<CoprocessorTestProtocol, List<Student>>() {
public List<Student> call(CoprocessorTestProtocol instance)throws IOException{
return instance.getStudentList(startKey, endKey);
}
});
table.close();
List<Student> anotherList = new ArrayList<Student>();
for (List<Student> studentData: allRegionOutput.values()){
anotherList.addAll(studentData);
}
return anotherList;
}
public static void main(String args){
if (args.length < 2) {
System.out.println("Usage : startRegistrationNumber endRegistrationNumber");
return;
}
int startRegistrationNumber = args[0];
int endRegistrationNumber = args[1];
for (Student student : displayStudentInfo(startRegistrationNumber, endRegistrationNumber)){
System.out.println(student);
}
}
}
注意してください:例でScanner.next(Object)
法上の特別な外観を持っていてください。これはブール値を返し、現在のオブジェクトを引数に格納します
関連する問題
- 1. oracle plsqlのステップ・バイ・ステップ・ロギング
- 2. ステップ
- 3. ステップ
- 4. ステップ
- 5. CucumberJsステップのステップのネーム&ナンバーを取得&ステップ
- 6. 従来の(標準)チェックアウト(ステップ・バイ・ステップ・ページ)
- 7. N階段ステップ
- 8. ステップのチャンク
- 9. イドリス誘導ステップ
- 10. Javascript数ステップ数
- 11. ステップ - コントローラ上
- 12. TFSコピーファイルのステップ
- 13. デバッグ - 次のステップ?
- 14. ステップEval Common Lisp
- 15. NodeJSはステップ
- 16. ステップ関数MatPlotLib
- 17. ステップ付きアドイン
- 18. Opencart - 。ステップ2
- 19. 次のステップ
- 20. スーパーバージュ:ライトニングコンポーネントフレームワークスペシャリスト - ステップ3
- 21. ステップ間のステップステップアプリケーションフォーム
- 22. ポーターステマー、ステップ1b
- 23. Sympyステップは
- 24. 最小ステップ(バリアント)
- 25. tf.train.SequenceExample各ステップのリスト
- 26. ドロップダウンリストのステップ定義
- 27. タイムピッカー調整分ステップ
- 28. キュウリルビー - モジュール内のステップ
- 29. CakePHP 3ステップ登録
- 30. Joomlaの2ステップRegstration
申し訳ありませんが、シェルで質問しましたが、私はJavaに答えました。 "シェル"という言葉には記されていません。とにかく、誰かのために役立つかもしれない..私はシェルではわからない。 HBaseシェルでは決して実際に働いたことがありません – Mallikarjun