Hive-create-table

提供:Dev Guides
移動先:案内検索

ハイブ-テーブルの作成

この章では、テーブルの作成方法とデータの挿入方法について説明します。 HIVEでテーブルを作成する規則は、SQLを使用してテーブルを作成することに非常に似ています。

テーブルステートメントの作成

Create Tableは、Hiveでテーブルを作成するために使用されるステートメントです。 構文と例は次のとおりです。

構文

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.] table_name

[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[ROW FORMAT row_format]
[STORED AS file_format]

*CREATE TABLE* ステートメントを使用して *employee* という名前のテーブルを作成する必要があると仮定します。 次の表に、従業員テーブルのフィールドとそのデータ型を示します。
Sr.No Field Name Data Type
1 Eid int
2 Name String
3 Salary Float
4 Designation string

以下のデータは、コメント、フィールドターミネーター、行ターミネーター、保存ファイルタイプなどの行形式のフィールドです。

COMMENT ‘Employee details’
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED IN TEXT FILE

次のクエリは、上記のデータを使用して employee という名前のテーブルを作成します。

hive> CREATE TABLE IF NOT EXISTS employee ( eid int, name String,
salary String, destination String)
COMMENT ‘Employee details’
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED AS TEXTFILE;

IF NOT EXISTSオプションを追加すると、テーブルが既に存在する場合、Hiveはステートメントを無視します。

テーブルが正常に作成されると、次の応答が表示されます。

OK
Time taken: 5.905 seconds
hive>

JDBCプログラム

テーブルを作成するJDBCプログラムの例を示します。

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

public class HiveCreateTable {
   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
      stmt.executeQuery("CREATE TABLE IF NOT EXISTS "
         +" employee ( eid int, name String, "
         +" salary String, destignation String)"
         +" COMMENT ‘Employee details’"
         +" ROW FORMAT DELIMITED"
         +" FIELDS TERMINATED BY ‘\t’"
         +" LINES TERMINATED BY ‘\n’"
         +" STORED AS TEXTFILE;");

      System.out.println(“ Table employee created.”);
      con.close();
   }
}

HiveCreateDb.javaという名前のファイルにプログラムを保存します。 このプログラムをコンパイルして実行するには、次のコマンドを使用します。

$ javac HiveCreateDb.java
$ java HiveCreateDb

出力

Table employee created.

データの読み込みステートメント

一般に、SQLでテーブルを作成した後、Insertステートメントを使用してデータを挿入できます。 しかし、Hiveでは、LOAD DATAステートメントを使用してデータを挿入できます。

Hiveにデータを挿入する際、LOAD DATAを使用してバルクレコードを保存することをお勧めします。 データをロードするには2つの方法があります。1つはローカルファイルシステムから、もう1つはHadoopファイルシステムからです。

構文

ロードデータの構文は次のとおりです。

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename
[PARTITION (partcol1=val1, partcol2=val2 ...)]
  • LOCALは、ローカルパスを指定する識別子です。 オプションです。
  • OVERWRITEは、テーブル内のデータを上書きするためのオプションです。
  • PARTITIONはオプションです。

次のデータをテーブルに挿入します。 これは、 /home/user ディレクトリにある sample.txt という名前のテキストファイルです。

1201  Gopal       45000    Technical manager
1202  Manisha     45000    Proof reader
1203  Masthanvali 40000    Technical writer
1204  Kiran       40000    Hr Admin
1205  Kranthi     30000    Op Admin

次のクエリは、指定されたテキストをテーブルにロードします。

hive> LOAD DATA LOCAL INPATH '/home/user/sample.txt'
OVERWRITE INTO TABLE employee;

ダウンロードが成功すると、次の応答が表示されます。

OK
Time taken: 15.905 seconds
hive>

JDBCプログラム

以下に、指定されたデータをテーブルにロードするJDBCプログラムを示します。

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

public class HiveLoadData {

   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
      stmt.executeQuery("LOAD DATA LOCAL INPATH '/home/user/sample.txt'" + "OVERWRITE INTO TABLE employee;");
      System.out.println("Load Data into employee successful");

      con.close();
   }
}

HiveLoadData.javaという名前のファイルにプログラムを保存します。 このプログラムをコンパイルして実行するには、次のコマンドを使用します。

$ javac HiveLoadData.java
$ java HiveLoadData

出力:

Load Data into employee successful