2017-08-24 1 views
0

Je suis dans le test DW et j'ai besoin de comparer les données de la source à la cible. Les données sources sont stockées dans la ruche/SGBDR tandis que les données cibles sont chargées dans Hbase. Je suis nouveau à Hbase. Peut-on m'aider avec l'approche que je peux prendre. Ce que je cherche est une fonction similaire à celle de "MOINS". C'est possible ?Hive to Hbase comparaison des données dans les tableaux

Répondre

0

Vous devez écrire le fichier java dans ce que vous pouvez combiner:

HBase: 
import java.io.IOException; 

// HBASE 
import org.apache.hadoop.conf.Configuration; 

import org.apache.hadoop.hbase.HBaseConfiguration; 
import org.apache.hadoop.hbase.client.Get; 
import org.apache.hadoop.hbase.client.HTable; 
import org.apache.hadoop.hbase.client.Result; 
import org.apache.hadoop.hbase.util.Bytes; 



public class RetriveData{ 

    public static void main(String[] args) throws IOException, Exception{ 

     // Instantiating Configuration class 
     Configuration config = HBaseConfiguration.create(); 

     // Instantiating HTable class 
     HTable table = new HTable(config, "emp"); 

     // Instantiating Get class 
     Get g = new Get(Bytes.toBytes("row1")); 

     // Reading the data 
     Result result = table.get(g); 

     // Reading values from Result class object 
     byte [] value = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("name")); 

     byte [] value1 = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("city")); 

     // Printing the values 
     String name = Bytes.toString(value); 
     String city = Bytes.toString(value1); 

**// CALL THE HIVE CLASS(HiveQLOrderBy)...YOU CAN COMPARE** 

     System.out.println("name: " + name + " city: " + city); 
    } 
} 


//HIVE 

import java.sql.SQLException; 
import java.sql.Connection; 
import java.sql.ResultSet; 
import java.sql.Statement; 
import java.sql.DriverManager; 

public class HiveQLOrderBy { 
    private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver"; 

    public static void main(String[] args) throws SQLException { 

     // Register driver and create driver instance 
     Class.forName(driverName); 

     // get connection 
     Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", ""); 

     // create statement 
     Statement stmt = con.createStatement(); 

     // execute statement 
     Resultset res = stmt.executeQuery("SELECT * FROM employee ORDER BY DEPT;"); 
     System.out.println(" ID \t Name \t Salary \t Designation \t Dept "); 

     while (res.next()) { 
     System.out.println(res.getInt(1) + " " + res.getString(2) + " " + res.getDouble(3) + " " + res.getString(4) + " " + res.getString(5)); 
     } 

     con.close(); 
    } 
} 
+0

Merci @R Palanivel, mais ce que je comprends du fichier Java ci-dessus est qu'il imprime séparément le résultat de la table Hbase et Ruche alors devra le comparer manuellement. S'il vous plait corrigez moi si je me trompe. Je n'ai pas été en mesure de l'implémenter dès maintenant. Veuillez suggérer. –