Avro Data Types
データ入力ツールを使用して圧縮されていないAvroファイルおよびデフレート圧縮されたAvroファイルを読み込み、データ出力ツールを使用してAvroファイルを書き込みます。
入力
デフレート圧縮のみがサポートされています。
14種類のネイティブAvroデータ型のほとんどがサポートされています。インポート時の型のマッピングは次のとおりです。
String: UTF-8をV_WString (UTF-16)に変換
Bytes: Blobとして維持される(必要に応じてBlobツールを使用して変換する)
Int: Int32として維持される
Long: Int64として維持される
Float: Float (単精度浮動小数点数値型)として維持される
Double: Double (倍精度浮動小数点数値型)として維持される
Boolean: Boolとして維持される
Null: サポートされていない
Enum: 文字列同等に変換される
Union: Alteryxは、2つのサブタイプを持つユニオンをサポートしています。どちらのサブタイプも同等である必要がある(例えば、intまたはダブルの両方)、またはそのいずれかがNullである必要があります。
Alteryxフィールドタイプは、非nullのブランチ(または両方が非nullの場合は両方のブランチ)のタイプです。
非nullブランチがアクティブな場合、Alteryxフィールドにその値が含まれます。
nullブランチがアクティブな場合、Alteryxフィールドはnullに設定されます。
無効なユニオンはJSONとしてV_WStringにインポートされます(必要に応じて、JSON解析ツールを使用して変換します)。例えば、アクティブなブランチとしてintを持つユニオンは、"{"int":123}"として表すことができます。
Fixed: Blobとして維持される(必要に応じてBlobツールを使用して変換する)
これらのAvro型はネイティブではサポートされていませんが、JSONとして文字列にインポートされます(必要に応じて、JSONパースツール を使用して変換します)。
Record: 例えば、intフィールドと文字列フィールドの両方を含むレコードでは"{"SubField1":7,"SubField2":"Field2"}"です。
Array: 例えば、intの配列では"[1,2,3,4,5]"です。
Map: 例えば、Double (倍精度浮動小数点数値型)への文字列のマップでは"{"Key1":Value1,"Key2":Value2}"です。
出力
Avroファイルを書き込む際は、2つのオプションがあります。
圧縮を有効にする(デフレート): 圧縮を有効にすると出力時間は長くなりますが、ファイルが大きくなるとネットワーク時間が短縮されます。サポートされている圧縮は、DEFLATEアルゴリズム(本質的にgzip)を使用し、Hiveなどの他のAvro対応ツールによってネイティブにサポートされる必要があります。
Null値をサポートする: このオプションを選択すると、_all_フィールドが、nullブランチと値ブランチを持つユニオンとして書き込まれます。Alteryx値がnullの場合、出力Avroユニオンではそのnullブランチが選択されます。そうでない場合、その値ブランチが選択されます。
このオプションが選択されていない場合、すべての出力フィールドは、固有のAvroタイプ(非ユニオン)として書き込まれます。nullのAlteryxフィールドは、既定値として書き込まれます(例えば、int32の場合は0、文字列フィールドの場合は空の文字列)。
「既知の」値を持つNull値をHadoopで処理できるようにするには、式ツール を使用することを検討します。
AlteryxからAvroへのタイプマッピングは次のとおりです。
Bool: Booleanとして維持される
Byte、Int16、Int32: Int (32ビット)として維持される
Int64: Long (64ビット)として維持される
Float: Float (単精度浮動小数点数値型)として維持される
DateTime as Date, Time, DateTime
Double: Double (倍精度浮動小数点数値型)として維持される
FixedDecimal: Double (倍精度浮動小数点数値型)に変換される
String、V_String、Date、Time、DateTime: String (UTF-8)として維持される
WString、V_WString: String (UTF-8)に変換される
Blob、SpatialBlob: Bytesとして維持される