データ処理によってHive表からデータが取得されると、データがDgraphに収集されるときにHiveデータ型がDgraphデータ型にマップされます。
ワークフローの検出フェーズは、データ処理により、Dgraphの属性スキーマを決定するためにデータ・セット・メタデータを検出することを意味します。データ処理では、特定のHive表列のデータ型を確定できたら、このHive列のデータ型をDgraph属性データ型にマップできるようになります。
Hive表が作成されると、列ごとにデータ型が指定されます(BOOLEANやDOUBLEなど)。データ処理ワークフローでは、Hive列ごとにDgraph属性が作成されます。作成される属性のDgraphデータ型は、Hive列のデータ型に基づいています。Dgraphレコードとは何か、およびDgraph属性とは何かに関する情報を含むデータ・モデルの詳細は、「Dgraphデータ・モデル」の項を参照してください。
Hiveデータ型 | Hive説明 | Dgraphデータ型への変換 |
---|---|---|
ARRAY<data_type> | Hiveデータ型の値の配列(ARRAY<STRING>など)。 | mdex:data_type-set
data_typeは、この列内のDgraphデータ型です。これらの-setデータ型は、複数割当属性用です(mdex:string-setなど)。 |
BIGINT | 8バイトの符号付き整数。 | mdex:long |
BOOLEAN | TRUEまたはFALSE。 | mdex:boolean |
CHAR | 固定長の文字列(最大長は255)。 | mdex:string |
DATE | 次のフォームで特定の年/月/日を表します。
YYYY-MM-DDデータ型には時刻構成要素はありません。サポートされる値の範囲は0000-01-01から9999-12-31です。 |
mdex:dateTime |
DECIMAL | 38桁の精度の数値。 | mdex:double |
DOUBLE | 8バイトの(倍精度)浮動小数点数。 | mdex:double |
FLOAT | 4バイトの(単精度)浮動小数点数。 | mdex:double |
INT | 4バイトの符号付き整数。 | mdex:long |
SMALLINT | 2バイトの符号付き整数。 | mdex:long |
STRING | 最大32,767バイトの文字列値。 | mdex:string
値の100%が実際には別のデータ書式(longやdateTimeなど)である場合、文字列列はDgraphの文字列以外のデータ型としてマップできます。 |
TIMESTAMP | ある時点を表し、オプションとしてナノ秒の精度を設定できます。使用可能な日付値の範囲は、1400-01-01から9999-12-31までです。 | mdex:dateTime |
TINYINT | 1バイトの符号付き整数。 | mdex:long |
VARCHAR | 長さの指定子を持つ文字列(1から65355まで)。 | mdex:string |
STRING以外のデータ型でHive列が構成されている場合、データ処理では、この列内のレコード値の書式は有効であると見なされます。この場合、この列から導出されたDgraph属性では、上記の表にリストされているマップ済のDgraphデータ型が自動的に使用されます。
たとえば、データ処理ディスカバラにより、特定の文字列列に実際に地域コードが含まれると判断された場合(列値の100%が適切な地域コードであるため)、これらの地域コード値はDgraphのmdex:geocodeデータ型として収集されます。ただし、列値の95%が地域コードであるが、他の5%が別のデータ型である場合、この列のデータ型はDgraphのmdex:stringデータ型にデフォルト設定されます。ただし、科学的記数法("1.4E-4"など)で表示される倍精度浮動小数点値は、倍精度浮動小数点ではなく文字列として評価されます。
もう1つ例を挙げると、Hive文字列列の100%が整数値で構成されている場合、これらの値はDgraphのmdex:longデータ型として収集されます。有効な整数書式はすべて受け入れられます("10"、"-10"、"010"および"+10"など)。
Latitude Longitude Latitude, Longitude (Latitude Longitude) (Latitude, Longitude)
40.55467767 -54.235 40.55467767, -54.235 (40.55467767 -54.235) (40.55467767, -54.235)
カンマ区切り書式の場合、カンマの後ろにスペースが必要です。
これらの地域コード書式が列データ内で検出された場合、その値は地域コード(mdex:geocode)属性としてDgraphに収集されます。
DATE値としてHive表に格納された日付は、収集対象として有効な日付であると見なされます。これらのDATE値は、Dgraphのmdex:dateTimeデータ型として収集されます。
文字列としてHive表に格納された日付の場合、サポートされている日付書式のリストに対してチェックされます。文字列型の日付がサポートされている日付書式と一致した場合、これはmdex:dateTimeデータ型として収集されます。データ処理によってサポートされている日付書式は、dateFormats.txtファイルにリストされています。このファイルの詳細は、トピック「日付書式構成」を参照してください。
また、データ処理では、文字列列内の各日付が有効であるかどうかも検証されます。日付が有効でない場合、この列は日付列ではなく文字列列であると見なされます。
2013-10-23 01:23:24.1234567次のDgraph dateTime値に変換されます。
2013-10-23T05:23:24.123Z
日付は、Dgraphのmdex:dateTimeデータ型として収集されます。
HiveのTIMESTAMP値は有効な日付であると見なされ、Dgraphのmdex:dateTimeデータ型として収集されます。したがって、これらの書式はdateFormats.txtファイル内の書式に対してチェックされません。
HiveのTIMESTAMP値は、Studio内で表示される場合、(その列内の値に時間があるかどうかに応じて) "yyyy-MM-dd"または"yyyy-MM-dd HH:mm:ss"として書式設定されます。
2013-10-23 01:23:24 2012-09-22 02:24:25
2013-10-23T01:23:24.000Z 2012-09-22T02:24:25.000Z
2013-10-23 01:23:24 2012-09-22 02:24:25 2007-07-23
2013-10-23T00:00:00.000Z 2012-09-22T00:00:00.000Z 2007-07-23T00:00:00.000Z
このようになるのは、入力データ内に異なる日付書式が含まれる場合、すべての値と一致する、より一般的な書式が選択されるため、より具体的な時間情報を持つ値が一部の情報を失う可能性があるからです。
もう1つ例を挙げると、パターン"yyyy-MM-dd"の場合、"2001-01-01"と"2001-01-01 12:30:23"の両方を解析できます。ただし、"yyyy-MM-dd hh:mm:ss"のようなパターンの場合、短い文字列である"2001-01-01"に適用されると、エラーがスローされます。したがって、"2001-01-01"と"2001-01-01 12:30:23"の両方と一致できる"yyyy-MM-dd"が、最適な(最も使用可能範囲の広い)選択肢として選択されます。選択されたパターンには時間が含まれていないため、精度は下がります。