最初の 3 章 Hiveのデータ型
3.1 基本データ型
以下のためにハイブの文字列の型データベースと同等varchar型の文字列変数であるが、それは文字の数まで保持できる宣言することはできません種類、理論的には、それが保存できる2GBの文字の数を。
3.2 収集データの種類
ハイブ3つの複雑なデータ型のARRAY、MAP およびSTRUCT。ARRAYはとMAP とジャワにおける配列やマップなどを、およびSTRUCT でのC 言語の構造体には、名前付きフィールドのコレクションをカプセル化し、同様に、複雑なデータ型は、ネストの任意のレベルを可能にします。
ケース実用的な操作
1) 我々が使用した行は、次の表を仮定 JSONのデータ構造を表現するためにフォーマット。でハイブの次の訪問のためのフォーマット
{ "名": "songsong" 、 "友人":[ "ビンビン"、 "リリ"]、 // 列表アレイ、 "子供":{ // 键值地図、 "暁の歌":18 、 "xiaoxiaoの歌" :19 } "アドレス":{ // 结构構造体、 "ストリート": "ホイ長い関" 、 "街": "北京" } }
2 )上記データ構造に基づいて、我々はハイブ対応するテーブル内に作成し、データをインポート。
ローカルテストファイルを作成してあるtest.txt
Songsong、bingbing_lili、暁歌:18_xiaoxiaoソング:19、ホイロングguan_beijingの 襄陽、caicai_susu、シャオヤン:ヤン18_xiaoxiao: 19、チャオyang_beijing
注意:MAP 、STRUCT およびARRAY 関係の要素間は同じ文字で表すことができ、ここでは「_」。
3 )ハイブは、上のテストテーブルを作成してテスト
作成 、テーブル(テスト 名の文字列、 友人列<文字列> 、 子供マップ<文字列、整数> 、 アドレス構造体<文字列:文字列、都市街路> ) 終了行形式区切られたフィールドでの 「」 終了コレクションアイテムによって「_ 」 マップ終了キーで「:」 終了ラインで「\ nを」 ;
フィールドが説明しました:
終了行フォーマット区切られたフィールド「 」 - 列デリミタ
「_」--mapによって終了コレクションアイテム STRUCT およびARRAYの区切り文字(データ分割記号)
で終了し、マップキー「:」 - MAP のキーと値の区切り
「\ nの」によって終了行; - 行区切り
4 )テストテーブルにテキストデータを導入
ハイブ(デフォルト)>ロード・データのローカルINPATH「/opt/module/datas/test.txt'intoテーブルテスト
5 )データの3種類以下であるの列のセットにアクセス ARRAY 、MAP 、STRUCTのアクセスモード
ハイブ(デフォルト)> を選択し、友人[ 1 ]、子どもたち[ 「暁の歌]、address.city からテスト 名= "songsong"。 OK _c0 _c1都市 リリ 18 北京 時間取ら:0.076秒、フェッチされた:1行(複数可)
3.3 型変換
ハイブアトミックなデータ型は次のように暗黙の変換、行ってもよいのJavaの型変換は、例えば、式の使用INTのタイプを、TINYINTは自動的に変換INT タイプが、ハイブは、例えば、変換を逆にしない発現を使用TINYINTの、タイプINTが自動的に変換されることはありませんTINYINTのタイプを、それがない限り、エラーが返されますCASTの操作。
1。暗黙的型変換規則は次の通りであります
( 1 任意の整数型は暗黙のようなタイプのより広い範囲に変換することができる)TINYINT に変換することができるINT 、INTは、に変換することができるBIGINT 。
( 2 )すべての整数型、FLOAT 、およびSTRINGのタイプに暗黙的に変換することができるDOUBLE 。
( 3 )TINYINT 、SMALLINTは、INTは、に変換することができるFLOAT 。
( 4 )BOOLEANのタイプは他のタイプに変換することができません。
2。あなたは使用することができる CAST 操作表示データ型変換を
例えば、 CAST(「1」AS INT)は、文字列を使用するが、「1」の整数に変換される1 、キャストが失敗した場合、そのような実行としてCAST(INT AS「X-」) 、式はNULLを返しNULLを。