Hive-alter-table

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

ハイブ-テーブルの変更

この章では、テーブル名の変更、列名の変更、列の追加、列の削除または置換など、表の属性を変更する方法について説明します。

テーブルの変更ステートメント

Hiveのテーブルを変更するために使用されます。

構文

このステートメントは、テーブル内で変更する属性に基づいて、次の構文のいずれかを使用します。

ALTER TABLE name RENAME TO new_name
ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])
ALTER TABLE name DROP [COLUMN] column_name
ALTER TABLE name CHANGE column_name new_name new_type
ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])

名前を変更…ステートメント

次のクエリは、テーブルの名前を employee から emp に変更します。

hive> ALTER TABLE employee RENAME TO emp;

JDBCプログラム

テーブルの名前を変更するJDBCプログラムは次のとおりです。

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

public class HiveAlterRenameTo {
   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("ALTER TABLE employee RENAME TO emp;");
      System.out.println("Table Renamed Successfully");
      con.close();
   }
}

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

$ javac HiveAlterRenameTo.java
$ java HiveAlterRenameTo

出力:

Table renamed successfully.

変更ステートメント

次の表には、 employee テーブルのフィールドが含まれており、変更するフィールドを太字で示しています。

Field Name Convert from Data Type Change Field Name Convert to Data Type
eid int eid int
name String ename String
salary Float salary Double
designation String designation String

次のクエリは、上記のデータを使用して列名と列データ型の名前を変更します。

hive> ALTER TABLE employee CHANGE name ename String;
hive> ALTER TABLE employee CHANGE salary salary Double;

JDBCプログラム

以下に、列を変更するJDBCプログラムを示します。

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

public class HiveAlterChangeColumn {
   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("ALTER TABLE employee CHANGE name ename String;");
      stmt.executeQuery("ALTER TABLE employee CHANGE salary salary Double;");

      System.out.println("Change column successful.");
      con.close();
   }
}

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

$ javac HiveAlterChangeColumn.java
$ java HiveAlterChangeColumn

出力:

Change column successful.

列ステートメントの追加

次のクエリは、従業員テーブルにdeptという名前の列を追加します。

hive> ALTER TABLE employee ADD COLUMNS (
dept STRING COMMENT 'Department name');

JDBCプログラム

テーブルに列を追加するJDBCプログラムを以下に示します。

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

public class HiveAlterAddColumn {
   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("ALTER TABLE employee ADD COLUMNS " + " (dept STRING COMMENT 'Department name');");
      System.out.prinln("Add column successful.");

      con.close();
   }
}

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

$ javac HiveAlterAddColumn.java
$ java HiveAlterAddColumn

出力:

Add column successful.

置換ステートメント

次のクエリは、 employee テーブルからすべての列を削除し、 emp および name 列に置き換えます。

hive> ALTER TABLE employee REPLACE COLUMNS (
eid INT empid Int,
ename STRING name String);

JDBCプログラム

以下に示すのは、 eid 列を empid に、 ename 列を name に置き換えるJDBCプログラムです。

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

public class HiveAlterReplaceColumn {

   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("ALTER TABLE employee REPLACE COLUMNS "
         +" (eid INT empid Int,"
         +" ename STRING name String);");

      System.out.println(" Replace column successful");
      con.close();
   }
}

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

$ javac HiveAlterReplaceColumn.java
$ java HiveAlterReplaceColumn

出力:

Replace column successful.