INSERT、UPDATE、DELETE に設定する構成値 上記の新しいパラメータに加えて、INSERT ... VALUES、UPDATE、および DELETE をサポートするために、いくつかの既存のパラメータを設定する必要があります。
構成キー
に設定する必要があります
hive.support.concurrency true (default is false)
hive.enforce.bucketing true (default is false) (Not required as of Hive 2.0)
hive.exec.dynamic.partition.mode nonstrict (default is strict)
圧縮のために設定する構成値
システム内のデータが Hive ユーザー (つまり、Hive メタストアを実行するユーザー) によって所有されていない場合、Hive は圧縮を実行するためにデータを所有するユーザーとして実行する権限が必要です。ユーザーを偽装するように HiveServer2 を既にセットアップしている場合、Hive メタストアを実行しているホストから Hive がユーザーを偽装する権利を持っていることを確認するだけです。これは、Hadoop の core-site.xml ファイルの hadoop.proxyuser.hive.hosts にホスト名を追加することによって行われます。これをまだ行っていない場合は、プロキシ ユーザーとして機能するように Hive を構成する必要があります。これには、Hive メタストアを実行しているユーザーのキータブを設定し、hadoop.proxyuser.hive.hosts と hadoop.proxyuser.hive.groups を Hadoop の core-site.xml ファイルに追加する必要があります。
UPDATE ステートメントには次の制限があります。
WHERE 句の式は、Hive SELECT 句でサポートされている式である必要があります。
パーティションとバケットの列は更新できません。
UPDATE ステートメントでは、クエリのベクトル化は自動的に無効になります。ただし、更新されたテーブルは、ベクトル化を使用して引き続きクエリできます。
サブクエリは、SET ステートメントの右側では許可されていません。
次の例は、このステートメントの正しい使用法を示しています。
UPDATE students SET name = null WHERE gpa <= 1.0;
DELETE ステートメント
DELETE ステートメントを使用して、既に Apache Hive に書き込まれたデータを削除します。
DELETE FROM tablename [WHERE expression];
DELETE ステートメントには次の制限があります。DELETE 操作では、クエリのベクトル化が自動的に無効になります。ただし、削除されたデータを含むテーブルは、ベクトル化を使用して引き続きクエリできます。
次の例は、このステートメントの正しい使用法を示しています。
DELETE FROM students WHERE gpa <= 1,0;