技術共有

Hive のデータ型とストレージ形式の概要

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1.データの種類

Hive は、プリミティブ データ型と複雑なデータ型の 2 つのカテゴリに分類される複数のデータ型をサポートします。 Hive でサポートされるデータ型は次のとおりです。

プリミティブ データ型:

1. 整数型:

                小さな: 1バイトの符号付き整数
               スモールイント: 2バイトの符号付き整数
               整数: 4バイトの符号付き整数
                ビッグインテント: 8バイトの符号付き整数
               浮く: 4バイトの単精度浮動小数点数
               ダブル: 8バイト倍精度浮動小数点数
                小数点: Decimal(10,2) などの高精度の数値型、精度、スケールを指定できます。

バイト: コンピュータの最も基本的な記憶単位の 1 つ、1 バイトは 8 ビットを占め、データ範囲: 負の範囲: -128 ~ -1、正の範囲: 0 ~ 127

2. 文字列型:

                弦: 可変長文字列
               varchar: 最大長制限のある可変長文字列 (varchar(255) など)
               文字: char(10) などの固定長文字列

3.日付/時刻タイプ:

                タイムスタンプ: ナノ秒まで正確な日付と時刻を含むタイムスタンプ
               日付: 日付部分のみが含まれ、時刻部分は含まれません
                間隔: 2 つの日付または時刻の差を表すために使用される時間間隔

4.ブール型:

                ブール値: ブール値、値は true または false

5. バイナリ型:

                バイナリ: 任意の長さのバイト配列

複雑なデータ型:
1.配列型

       配列<T> : 配列など、同じ型の複数の要素を含む順序付きリスト<int>

2. マッピングの種類

   地図<K, V> : キーと値のペアの順序なしのコレクション。キーと値はマップなどの任意のデータ型にすることができます。<string, int>


    3. 構造の種類

        構造体<col1: type1, col2: type2, ...> : 複数のフィールドを含むレコード。各フィールドは異なるデータ型にすることができます。構造体<name: string, age: int>

  1. CREATE TABLE example_table (
  2. tinyint_col tinyint,
  3. smallint_col smallint,
  4. int_col int,
  5. bigint_col bigint,
  6. float_col float,
  7. double_col double,
  8. decimal_col decimal(10, 2),
  9. string_col string,
  10. varchar_col varchar(255),
  11. char_col char(10),
  12. timestamp_col timestamp,
  13. date_col date,
  14. boolean_col boolean,
  15. binary_col binary,
  16. array_col array<int>,
  17. map_col map<string, int>,
  18. struct_col struct<name: string, age: int>,
  19. union_col uniontype<int, string>
  20. );

2.Hiveファイルの保存形式

Hive のストレージ形式は 2 つのカテゴリに分類されます。

プレーン テキスト ファイルのタイプ: textfile。圧縮されておらず、Hive のデフォルトの保存形式でもあります。

1 つのカテゴリはバイナリ ファイル ストレージです。

sequencefile: は圧縮されるため、load メソッドを使用してデータをロードできません。

orcfile: 圧縮されるため、load メソッドを使用してデータをロードできません。

parquet: 圧縮されるため、load メソッドを使用してデータをロードできません。

rcfile: 圧縮は可能ですが、load メソッドを使用してデータをロードすることはできません。orcfile の低構成です。

textfile と sequencefile のストレージ形式は行ストレージに基づいており、orc と parquet は列ストレージに基づいており、rcfile は行と列の混合ストレージです。

テーブルを作成するときに、stored as parquet を使用してテーブルの格納形式を指定できます。次に例を示します。

  1. create table if not exists stocks_parquet (
  2. track_time string,
  3. url string,
  4. session_id string,
  5. referer string,
  6. ip string,
  7. end_user_id string,
  8. city_id string
  9. )
  10. stored as parquet;

ハイブのデフォルトのストレージ形式を変更します。

  1. <property>
  2. <name>hive.default.fileformat</name>
  3. <value>TextFile</value>
  4. <description>
  5. Expects one of [textfile, sequencefile, rcfile, orc].
  6. Default file format for CREATE TABLE statement. Users can explicitly override it by CREATE TABLE ... STORED AS [FORMAT]
  7. </description>
  8. </property>
  9. 也可以使用set方式修改:
  10. set hive.default.fileformat=TextFile