RegexInputFormatは、DelimitedTextInputFormatの汎化と考えられます。これは、Oracle Loader for HadoopのDelimitedTextInputFormatで処理できないデータに役立ちますa片 男同。例として、あるフィールドが援用符で区切られ、別のフィールドが角カッコで区切られているWebログなどがあります。さらにレコードを转业翰墨で区切る必要がありますが、java.util.regex正規表現ベースのパターン一致エンジンを使用して各テキスト行のフィールドを識別します。java.util.regexの詳細は、次のサイトのJava Platform Standard Edition 6 Javadocを参照してください。
-summary.html
表3-3に、RegexInputFormatの领略動作を制御するプロパティを示します。
国内自拍2019在线正規表現は、整体として各テキスト行に一致する必要があることに审视してください。たとえば、入力行「a,b,c,」の正しい正規表現パターンは「([^,]*),」ではなく「([^,]*),([^,]*),([^,]*),」になります。これは、正規表現が入力テキストの行に対して繰り返し適用されないためです。
RegexInputFormatでは、正規表現の一致による获得グループをフィールドとして使用します。突出なグループのゼロは、入力行整体を表すため無視されます。グループの获得については、#cgで説明しています。
oracle.hadoop.loader.input.fieldNamesプロパティが設定される場合、RegexInputFormatは、このプロパティをフィールド名のカンマ区切りリストと解釈します。この場合、フィールド名の数によって、各レコードのフィールドの数が決まります。余分なフィールドは破棄され、末尾の不及分のフィールドはnullに設定されます。
oracle.hadoop.loader.input.fieldNamesプロパティが設定されていない場合、RegexInputFormatのRecordReaderは、F0a片 男同, F1,…Fnをフィールド名(nは、この時点までにRecordReaderで検出された1行当たりのフィールドの最大数)として使用します。