kann jeder muß erklären, wie regionCoprocessor Trog laden shell.i nicht korrekte Informationen über das Laden bekommen können und Coprocessor.Thanks im VorausWie für Schritt Coprozessor Schritt zum Laden
Antwort
Bitte gehen Sie folgendermaßen bereitstellen:
Schritt 1: eine Schnittstelle erstellen und org.apache.hadoop.hbase.ipc.CoprocessorProtocol
Schritt 2 erweitern: definieren Sie die Methode in der Schnittstelle, die Sie einmal Koprozessor Anruf ausführen möchten ist
gemachtSchritt 3: eine Instanz von 4 Erstellen HTable
Schritt: Rufen Sie die HTable.coprocessorExec()
Verfahren mit allen erforderlichen Parameter
finden Sie das folgende Beispiel:
Im Beispiel Wir versuchen, eine Liste von Studenten zu bekommen, deren Registrierungsnummer in einen Bereich fällt, der uns interessiert.
Erstellen von Schnittstellenprotokoll:
public interface CoprocessorTestProtocol extends org.apache.hadoop.hbase.ipc.CoprocessorProtocol{
List<Student> getStudentList(byte[] startRegistrationNumber, byte[] endRegistrationNumber) throws IOException;
}
Probe-Studenten-Klasse:
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() + " ]"
}
}
Model-Klasse: [Wenn die Geschäftslogik Daten von HBase zu erhalten geschrieben]
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-Klasse: [wo der Anruf an Koprozessor wird]
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);
}
}
}
Bitte beachten Sie: Bitte haben Sie einen besonderen Blick auf Scanner.next(Object)
Methode im Beispiel. Dies gibt boolesch zurück und speichert das aktuelle Objekt in Object
Argument
- 1. Daten Schritt für Schritt laden
- 2. wie Schritt für Schritt
- 3. Laden div (Einblenden) Schritt für Schritt
- 4. Sympy Schritt für Schritt Lösungen
- 5. matplotlib, Schritt für Schritt Animation
- 6. Schritt für Schritt Verfahren zum Herstellen einer Verbindung zum sitespeak
- 7. Django form.save Schritt für Schritt
- 8. Iex hüpfen Schritt für Schritt?
- 9. Listenmitglieder Schritt für Schritt zusammenfassen
- 10. php Schritt für Schritt Ausführung
- 11. Wie man Headroom.js funktioniert/Schritt-für-Schritt
- 12. wie owa arbeitet Schritt für Schritt
- 13. Schritt für Schritt zum Erstellen einer Produktionsversion in Android Studio
- 14. Schritt-für-Schritt-Anleitung zum Erstellen eines Index?
- 15. Schritt für Schritt interaktiver Debugger für Rust?
- 16. Schritt für Schritt SpecFlow-Test für Dummies
- 17. Schritt für Schritt Tutorial für xinc?
- 18. coffe Datenschicht Beispiel Schritt für Schritt
- 19. Schritt für Schritt Vereinfachung in coq?
- 20. Schritt-für-Schritt-Beispiel eines Lazy-Seq
- 21. Ausführen von node.js process Schritt für Schritt
- 22. Join Reihenfolge Schritt für Schritt in Oracle
- 23. Xamarin Schritt für Schritt Assistenten android Aufrufe
- 24. WebStorm - beginnend mit Sass Schritt für Schritt
- 25. Jboss Schritt für Schritt eingestellt heiß bereitstellen
- 26. ctags, jsctags/doctorjs, Tagbar Schritt für Schritt
- 27. Schritt für Schritt Debugging Ziel c
- 28. Schritt für Schritt Google SSO (Java)?
- 29. Create dfm Schritt für Schritt mit Quantea
- 30. Wie man MarkerClusterer - Schritt-für-Schritt für einen Neuling verwendet
Sorry, Sie haben in Shell gefragt, ich antwortete für Java. Verpasste das Wort "Shell". Wie auch immer, könnte hilfreich für jemand anderen sein .. Ich bin mir nicht sicher auf Shell. Habe noch nie wirklich intensiv an HBase-Shell gearbeitet – Mallikarjun