2017-08-01 9 views
1

現在、ハイブで複数のテーブルを結合しようとしています。私がこれを達成した後、私はいくつかの列の種類が適切でないことを発見しました。いくつかはfloatであるべきだと思っていましたが、なんらかの形でstringになります。それから私は、ALTERコマンドを実行した:alter table table_name change column_name column_name float;これは、エラーメッセージが返さ:org.apache.hadoop.hive.ql.exec.DDLTaskから実行エラー、リターンコード1:キャストの別のアクションとハイブの変更

失敗しました。テーブルを変更できません。次の列は、私は、これはハイブがtableに示したように浮遊する変換文字列をサポートしていないことを意味考えてそれぞれの位置での既存の列との互換性のない型

を持っています。しかし、私は同じコラムでキャストして、欲しい結果を得ることができることを発見しました。これは、私が変更とキャストとの間に異なる結果が生じる理由を混乱させる。その背後にある論理は何ですか? THX。

答えて

1

CHANGEキーワードを忘れてしまったようです。

alter table table_name CHANGE column_name column_name_new float; 

はこちらをご覧ください:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-ChangeColumnName/Type/Position/Comment

デモ:間違いのため

hive> create table t(a string); 
OK 
Time taken: 0.069 seconds 
hive> alter table t change a a_new float; 
OK 
Time taken: 0.158 seconds 
hive> describe formatted t; 
OK 
# col_name    data_type    comment 

a_new     float 
+0

申し訳ありません。私は自分のコマンドにchange keywordを持っています。更新しました。 –

+0

@G_cy別の列名を付けようとしました – leftjoin

+0

@G_cyはそれを数回チェックしました。これは、同じ列名と異なる種類の文字列、浮動小数点数、日付などで動作します。おそらく問題はHiveバージョンです。鉱山は1.2.1000.2.4.3.3-2 – leftjoin

関連する問題