2016-04-19 2 views

答えて

0

まあ、実際には、そのデータをすべて読み取る必要はありません。データを変換してデータベースにアップロードするか(データが比較的小さい場合)、共通形式(CSV、JSONなど)にエクスポートする必要があります。

Hive CLI、WebHCatまたはJDBC Hiveドライバを使用してデータを変換できます。

0

Hive JDBCドライバを使用して、Hiveテーブルに接続できます。以下のコードでテストやPOCを行っても問題はありませんが、エンドテーブルをHBase(Phoenixのチェック)やMongoDB、または待ち時間の少ないリレーショナルベースのテーブルに移動することをお勧めします。

パフォーマンスを向上させるために、Hiveでは動的パーティションや何らかのクラスター手法を使用することもできます。次のコードを使用することができます。私はそれをテストしていません(サンプルとして使用します)。

package org.hive.utils; 

import java.sql.*; 

public class HiveDB { 

public static final String HIVE_JDBC_DRIVER = "org.apache.hadoop.hive.jdbc.HiveDriver"; 
public static final String HIVE_JDBC_EMBEDDED_CONNECTION = "jdbc:hive://"; 
private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver"; 

private Statement getConnection() throws ClassNotFoundException, 
      SQLException { 
     Class.forName(HIVE_JDBC_DRIVER); 
     Connection connection = DriverManager.getConnection(
       HIVE_JDBC_EMBEDDED_CONNECTION, "", ""); 

     Statement statement = connection.createStatement(); 
     return statement; 
    } 

    public static void main(String[] args) { 
     HiveDB hiveDB = new HiveDB(); 
     try { 
     Statement statement = hiveDB.getConnection(); 
     //print each row 
     ResultSet resultSet = statement.executeQuery("select * from demo_read.t_event"); 
     int columns = resultSet.getMetaData().getColumnCount(); 
     while (resultSet.next()) { 
      for (int i = 0 ; i < columns; ++i) { 
       System.out.print(resultSet.getString(i + 1) + " "); 
       if (i == 100) break; //print up to 100th rows 
      } 
      System.out.println(); 
     } 
     statement.close; //close statement 
     } catch (ClassNotFoundException e) { 
     // 
     } catch (SQLException e) { 
     // 
     } 
    } 

} 
関連する問題