{
  "$schema" : "https://json-schema.org/draft/2020-12/schema",
  "$id" : "https://voltdb.com/voltsp/schemas/processor/parquet-encoder",
  "title" : "Parquet-encoder Processor Configuration",
  "description" : "The encoder consumes a stream of events and encodes them into parquet record.\nAll records are stored in local files in configured directory.\nWhen file size or record count constraint is reached the encoder closes the local file and emits it to next operator for further processing.\n",
  "type" : "object",
  "properties" : {
    "parquet-encoder" : {
      "type" : "object",
      "properties" : {
        "directory" : {
          "type" : "string",
          "description" : "Directory where parquet files will be stored"
        },
        "prefix" : {
          "type" : "string",
          "description" : "Prefix for parquet files",
          "default" : "data"
        },
        "maxFileSize" : {
          "description" : "Maximum file size in bytes before emitting",
          "default" : "128mb",
          "anyOf" : [ {
            "type" : "integer",
            "minimum" : -9223372036854775808,
            "maximum" : 9223372036854775807
          }, {
            "type" : "string",
            "pattern" : "^\\d+[kmgtpe]?b?$"
          }, {
            "type" : "string",
            "pattern" : "^\\d+.\\d+[kmgtpe]?b?$"
          } ],
          "type" : "object",
          "properties" : {
            "bytes" : {
              "type" : "integer",
              "minimum" : -9223372036854775808,
              "maximum" : 9223372036854775807
            }
          },
          "additionalProperties" : false
        },
        "maxRecords" : {
          "type" : "integer",
          "description" : "Maximum number of records before rolling",
          "default" : "1000000",
          "minimum" : -2147483648,
          "maximum" : 2147483647
        },
        "closeOnIdleTimeout" : {
          "type" : "string",
          "pattern" : "^(\\d+[smhd]|P(T|\\d+[YMD]).*)",
          "description" : "When stream is idle, encoder will close parquet file after configured timeout.\n0 or negative value means to never close a file by a timer.\n",
          "default" : "PT0S"
        },
        "messageTypeProvider" : {
          "type" : "string",
          "description" : "Provides parquet's message type definition."
        },
        "messageWriterFactory" : {
          "type" : "string",
          "description" : "A factory to create a parquet message writer"
        }
      },
      "required" : [ "messageTypeProvider", "messageWriterFactory" ],
      "additionalProperties" : false
    }
  },
  "required" : [ "parquet-encoder" ],
  "additionalProperties" : false
}
