Oracle NoSQLからParquetデータ型へのマッピング

Oracle NoSQLデータ型とParquetデータ型のマッピングについて説明します。

NoSQL型 Parquet型
BOOLEAN BOOLEAN
INTEGER INT32
LONG INT64
FLOAT DOUBLE
DOUBLE DOUBLE
BINARY BINARY
FIXED_BINARY BINARY
STRING BINARY(STRING)
ENUM BINARY(STRING)

または

BINARY(ENUM)、論理ENUMが構成されている場合

UUID BINARY(STRING)

または

FIXED_BINARY(16)、論理UUIDが構成されている場合

TIMESTAMP(p) INT64(TIMESTAMP(p))
NUMBER DOUBLE
field_name ARRAY(T)
group field_name(LIST) {
  repeated group list {
      required T element
  }
}
field_name MAP(T)
group field_name (MAP) {
    repeated group key_value (MAP_KEY_VALUE) {
       required binary key (STRING);
        required T value;
    }
}
field_name RECORD(K₁ T₁ N₁, Kٖ₂ T₂ N₂, ....)

説明:

K = キー名

T = 型

N = Null可能かどうか

group field_name {
    ni == true ? optional Ti ki : required Ti ki   
}
JSON BINARY(STRING)

または

BINARY(JSON)、論理JSONが構成されている場合

ノート:

NoSQL Number型をParquet Double型に変換する場合、値がDoubleで表現できない場合、精度が若干失われる可能性があります。値が大きすぎてDoubleとして表現できない場合、Double.NEGATIVE_INFINITYまたはDouble.POSITIVE_INFINITYに変換されます。