2017-07-27 3 views
1

まず挿入:私はハイブパーティション表を作成ハイブパーティションテーブルエラー

hive> create table partition_table 
    > (sid int ,sname string ,age int)    
    > partitioned by (sex string)  
    > row format delimited fields terminated by','; 
OK 
Time taken: 1.232 seconds 

テーブルDESCは以下の通りです:

hive> desc partition_table; 
    OK 
    sid      int           
    sname     string          
    age      int           
    sex      string          

# Partition Information  
# col_name    data_type    comment    

sex      string          
Time taken: 0.34 seconds, Fetched: 9 row(s) 

、その後、私は、この表の中にいくつかのデータを挿入しますが、それはdoesnの仕事はありません。

hive> insert into table partition_table partition(sex='M')select sno ,sname ,age from student1 where sex ='M'; 
FAILED: SemanticException [Error 10006]: Line 1:44 Partition not found ''M'' 

これを避けるには、次のコマンドを書き込んでから、insertコマンドを実行しても同じエラーが繰り返されます。

set exec.dynamic.partition=true;                   
set exec.dynamic.partition.mode=nonstrict; 

私をご案内してください。事前

+0

あなたは 'select sno、sname、ageをstudent1から追加して、sex = 'M''を質問に追加できますか?クエリに問題はありません。 – syadav

+0

もちろん、パーティション列は英語でなければなりません –

答えて

2

に感謝をロードする前に、パーティションを追加します。

ALTER TABLE partition_table ADD PARTITION(sex= 'M'); 
insert into table partition_table partition(sex='M') select sno ,sname ,age from student1 where sex ='M'; 

または動的なパーティションを試してみてください。

set hive.exec.dynamic.partition=true; 
INSERT OVERWRITE TABLE partition_table PARTITION (sex) 
SELECT sid, sname, age, sex 
FROM student1; 
+0

パーティションを追加する必要はありません。クエリは自動的に行います。 – syadav

+0

彼のエラーは、パーティション 'M'が見つからないと言うことがわかります。私の2番目の解決策では、私は動的パーティション化を推奨しています。 4行目の読書をやめましたか? – invoketheshell

+0

あなたの答えは非常に便利ですが、私は 'ALTER TABLE partition_table ADD PARTITION(sex = 'xxx'); ' - 新しいエラーが発生しました。' FAILED:Execution Error、org.apache.hadoop.hive.ql.exec.DDLTaskからコード1を返します。 MetaException(メッセージ:。直接メタストアDB接続の場合、我々はクライアントレベルでの再試行をサポートしていません) 'が、私はすでに javax.jdo.option.ConnectionURL < /name>'ハイブ-site.xmlの '< property> \t < name>を設定しています\t < value> JDBCます。mysql:// djt01:3306 /ハイブcharacterEncoding = UTF-8が< /value> \tは<説明> JDBCは、JDBCメタストアのための接続文字列を、私はそれが文字の設定の問題かもしれません。このエラーを検索< /property> –

0

クエリが正しかったです。しかし、一度あなたのテーブルで性別= 'M'値をチェックしてください。それは異なるセックスバリューかもしれません。

関連する問題