サンプリングおよび属性の処理

データ処理では、Hive表から多数のレコードをサンプリング(処理)します。

Hive表からサンプリングされるレコードの数は、次のStudioまたはDP CLI構成によって設定されます。

サンプリングされたレコードは、データ・セット内のレコードで構成されています。

属性の検出

データ処理の検出フェーズでは、Dgraphの属性スキーマを提案するためにDataSetメタデータを検出します。

文字列属性のレコードおよび値の検索設定

DPデータ型ディスカバラにより、属性が文字列属性であることが確認された場合、属性のレコードおよび値の検索設定は次のように設定されます。
  • 文字列の平均の長さが200文字以下である場合、属性は検索可能な値として構成されます。
  • 文字列の平均の長さが200文字を超える場合、属性は検索可能なレコードとして構成されます。

どちらの場合も、文字列の平均の長さとは、その列の値の文字列の平均の長さを示します。

列変換でのNULL値の効果

Hive表をサンプリングする場合、列ごとにEndeca属性が作成されます。Endeca属性のデータ型は、データ処理によるHive列の値の解釈方法によって決まります。たとえば、Hive列が文字列型であるが、ブール値のみが含まれる場合、Endeca属性はmdex:boolean型になります。Endeca属性のデータ型を決定するデータ処理計算では、NULL値は基本的に無視されます。

Avro名が無効なHive列名の処理

データ処理では、Avroファイルを使用して、(Dgraph HDFSエージェントを介して) Dgraphに収集する必要があるデータを格納します。Avroでは、属性名の先頭はアルファベットまたはアンダースコア文字([A-Za-z_])である必要があり、名前の残りの部分には英数字文字またはアンダースコア([A-Za-z0-9_])のみを含めることができます。

ただし、Hive列名には、Avro属性名で許可されない文字を含む、ほぼすべてのUnicode文字を含めることができます。この書式はHive 0.13.0で導入されました。

データ処理ではAvroファイルを使用して収集を行うため、これにより、Dgraph属性の名前はAvroと同じルールに制限されます。つまり、列名がAvro属性に格納される場合、これらの列名は次のように変更されます。
  • ASCII以外の英数字(Hive列名内)は_ (アンダースコア)に変更されます。
  • 先頭の文字が許可されていない場合、この文字はアンダースコアに変更され、名前の先頭には"A_"が付けられます。この結果、名前は実際には"A_" (Aの後ろに2つのアンダースコアが付いたもの)から始まる形になります。
  • 生成された名前がすでに処理されている列名の重複である場合、この属性名を一意の名前にするために番号が付けられます。このような処理が行われるのは特に、英語以外の列名の場合です。
次に例を示します。
Hive column name: @first-name

Changed name: A__first_name

この例では、先頭の文字(@)が有効なAvro文字でないため、アンダースコアに変更されています(また、名前の先頭には"A_"が付けられています)。ハイフンはアンダースコアに置き換えられていますが、他の文字はそのままです。

英語以外の表の属性名ではアンダースコア置換が何回も行われる可能性が高いため、名前が重複しやすくなります。このため、英語以外の属性名はA_______2のような形になる場合があります。