2017-08-24 43 views
0

我進入DW測試並需要比較源數據到目標數據。源數據存儲在hive/RDBMS中,而目標數據加載到Hbase中。我是Hbase的新手。任何人都可以幫助我採取我可以採取的方法。我正在尋找的是與「MINUS」類似的功能。可能嗎 ?Hive與表中數據的比較

回答

0

你應該寫Java文件中,可以組合:

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

感謝@R Palanivel,但我從上面的Java文件不解的是,它會單獨打印從HBase的表和蜂巢結果那麼將不得不手動比較它。如果我錯了,請糾正我。到目前爲止,我還沒能實現它。請建議。 –