2017-03-15 10 views
0

私はHiveテーブルの列に主キーを作成できないと読んでいます。しかし、私はいくつかの場所でDDLを見て、それを実行しました。それは何の問題もなく働いた。この後これは、ハイブの列に主キーを作成することとどのように違うのですか?

create table prim(id int, name char(30)) 
TBLPROPERTIES("PRIMARY KEY"="id"); 

私は「プリムにフォーマットについて説明」とキーは、私はテーブルに同じID番号を持つ2つのレコードを挿入し、カラムID

Table Parameters:   
PRIMARY KEY    id   

上で作成されていることを見てみました実行。

insert into prim values(1,'ABCD'); 
insert into prim values(2,'EFGH'); 

両方のレコードがテーブルに挿入されました。私にはわかりにくいのは、私が理解できるcreate文でPRIMARY KEYを与えることができないということです。しかし、TBLPROPERTIES("PRIMARY KEY"="id")で与えられたとき、RDBMSの主キーとどのように違うのですか?

+0

ハイブは、検証されていないプライマリキーと外部キーの制約をサポートしていると思います。あなたは同じことについて医者を見ることができます。 –

答えて

1

PRIMARY KEYTBLPROPERTIESは、列の重要性を保持するためのメタデータ参照用です。この列には制約は適用されません。これは設計の観点から参考にすることができます。

+0

このビットについて説明してください。「列の重要性を保持するためのメタデータ参照」 – Sidhartha

+1

テーブルがRDBMSテーブルの行にレプリケートされる場合、ビッグデータで制約の詳細を維持することは、将来の設計に役立ちます。将来、ハイブのACID実装がこれを利用するかもしれない。 –

+0

これは、開発者がハイブのクエリをテーブルに書くのに役立ちます。これは、データがどのように分散されるかについての洞察を与えるからです。 –

関連する問題