<extensionManifest><groupId>org.apache.nifi</groupId><artifactId>nifi-kudu-nar</artifactId><version>1.22.0</version><parentNar><groupId>org.apache.nifi</groupId><artifactId>nifi-hadoop-libraries-nar</artifactId><version>1.22.0</version></parentNar><systemApiVersion>1.22.0</systemApiVersion><buildInfo><tag>nifi-1.22.0-RC1</tag><branch>UNKNOWN</branch><revision>71e3ea9</revision></buildInfo><extensions><extension><name>org.apache.nifi.processors.kudu.PutKudu</name><type>PROCESSOR</type><description>Reads records from an incoming FlowFile using the provided Record Reader, and writes those records to the specified Kudu's table. The schema for the Kudu table is inferred from the schema of the Record Reader. If any error occurs while reading records from the input, or writing records to Kudu, the FlowFile will be routed to failure</description><tags><tag>put</tag><tag>database</tag><tag>NoSQL</tag><tag>kudu</tag><tag>HDFS</tag><tag>record</tag></tags><properties><property><name>Kudu Masters</name><displayName>Kudu Masters</displayName><description>Comma separated addresses of the Kudu masters to connect to.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Table Name</name><displayName>Table Name</displayName><description>The name of the Kudu Table to put data into</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Failure Strategy</name><displayName>Failure Strategy</displayName><description>If one or more Records in a batch cannot be transferred to Kudu, specifies how to handle the failure</description><defaultValue>route-to-failure</defaultValue><allowableValues><allowableValue><displayName>Route to Failure</displayName><value>route-to-failure</value><description>The FlowFile containing the Records that failed to insert will be routed to the 'failure' relationship</description></allowableValue><allowableValue><displayName>Rollback Session</displayName><value>rollback</value><description>If any Record cannot be inserted, all FlowFiles in the session will be rolled back to their input queue. This means that if data cannot be pushed, it will block any subsequent data from be pushed to Kudu as well until the issue is resolved. However, this may be advantageous if a strict ordering is required.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>kerberos-user-service</name><displayName>Kerberos User Service</displayName><description>Specifies the Kerberos User Controller Service that should be used for authenticating with Kerberos</description><controllerServiceDefinition><className>org.apache.nifi.kerberos.KerberosUserService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>1.22.0</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>kerberos-credentials-service</name><displayName>Kerberos Credentials Service</displayName><description>Specifies the Kerberos Credentials to use for authentication</description><controllerServiceDefinition><className>org.apache.nifi.kerberos.KerberosCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>1.22.0</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>kerberos-principal</name><displayName>Kerberos Principal</displayName><description>The principal to use when specifying the principal and password directly in the processor for authenticating via Kerberos.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>kerberos-password</name><displayName>Kerberos Password</displayName><description>The password to use when specifying the principal and password directly in the processor for authenticating via Kerberos.</description><required>false</required><sensitive>true</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Skip head line</name><displayName>Skip head line</displayName><description>Deprecated. Used to ignore header lines, but this should be handled by a RecordReader (e.g. "Treat First Line as Header" property of CSVReader)</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Lowercase Field Names</name><displayName>Lowercase Field Names</displayName><description>Convert column names to lowercase when finding index of Kudu table columns</description><defaultValue>false</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Handle Schema Drift</name><displayName>Handle Schema Drift</displayName><description>If set to true, when fields with names that are not in the target Kudu table are encountered, the Kudu table will be altered to include new columns for those fields.</description><defaultValue>false</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>record-reader</name><displayName>Record Reader</displayName><description>The service for reading records from incoming flow files.</description><controllerServiceDefinition><className>org.apache.nifi.serialization.RecordReaderFactory</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>1.22.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Data RecordPath</name><displayName>Data RecordPath</displayName><description>If specified, this property denotes a RecordPath that will be evaluated against each incoming Record and the Record that results from evaluating the RecordPath will be sent to Kudu instead of sending the entire incoming Record. If not specified, the entire incoming Record will be published to Kudu.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Operation RecordPath</name><displayName>Operation RecordPath</displayName><description>If specified, this property denotes a RecordPath that will be evaluated against each incoming Record in order to determine the Kudu Operation Type. When evaluated, the RecordPath must evaluate to one of hte valid Kudu Operation Types, or the incoming FlowFile will be routed to failure. If this property is specified, the &lt;Kudu Operation Type&gt; property will be ignored.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Insert Operation</name><displayName>Kudu Operation Type</displayName><description>Specify operationType for this processor.
Valid values are: INSERT, INSERT_IGNORE, UPSERT, UPDATE, DELETE, UPDATE_IGNORE, DELETE_IGNORE. This Property will be ignored if the &lt;Operation RecordPath&gt; property is set.</description><defaultValue>INSERT</defaultValue><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Flush Mode</name><displayName>Flush Mode</displayName><description>Set the new flush mode for a kudu session.
AUTO_FLUSH_SYNC: the call returns when the operation is persisted, else it throws an exception.
AUTO_FLUSH_BACKGROUND: the call returns when the operation has been added to the buffer. This call should normally perform only fast in-memory operations but it may have to wait when the buffer is full and there's another buffer being flushed.
MANUAL_FLUSH: the call returns when the operation has been added to the buffer, else it throws a KuduException if the buffer is full.</description><defaultValue>AUTO_FLUSH_BACKGROUND</defaultValue><allowableValues><allowableValue><displayName>AUTO_FLUSH_SYNC</displayName><value>AUTO_FLUSH_SYNC</value><description></description></allowableValue><allowableValue><displayName>AUTO_FLUSH_BACKGROUND</displayName><value>AUTO_FLUSH_BACKGROUND</value><description></description></allowableValue><allowableValue><displayName>MANUAL_FLUSH</displayName><value>MANUAL_FLUSH</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>FlowFiles per Batch</name><displayName>FlowFiles per Batch</displayName><description>The maximum number of FlowFiles to process in a single execution, between 1 - 100000. Depending on your memory size, and data size per row set an appropriate batch size for the number of FlowFiles to process per client connection setup.Gradually increase this number, only if your FlowFiles typically contain a few records.</description><defaultValue>1</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Batch Size</name><displayName>Max Records per Batch</displayName><description>The maximum number of Records to process in a single Kudu-client batch, between 1 - 100000. Depending on your memory size, and data size per row set an appropriate batch size. Gradually increase this number to find out the best one for best performances.</description><defaultValue>100</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Ignore NULL</name><displayName>Ignore NULL</displayName><description>Ignore NULL on Kudu Put Operation, Update only non-Null columns if set true</description><defaultValue>false</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>kudu-operations-timeout-ms</name><displayName>Kudu Operation Timeout</displayName><description>Default timeout used for user operations (using sessions and scanners)</description><defaultValue>30000ms</defaultValue><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>kudu-keep-alive-period-timeout-ms</name><displayName>Kudu Keep Alive Period Timeout</displayName><description>Default timeout used for user operations</description><defaultValue>15000ms</defaultValue><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>worker-count</name><displayName>Kudu Client Worker Count</displayName><description>The maximum number of worker threads handling Kudu client read and write operations. Defaults to the number of available processors.</description><defaultValue>36</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>kudu-sasl-protocol-name</name><displayName>Kudu SASL Protocol Name</displayName><description>The SASL protocol name to use for authenticating via Kerberos. Must match the service principal name.</description><defaultValue>kudu</defaultValue><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>success</name><description>A FlowFile is routed to this relationship after it has been successfully stored in Kudu</description><autoTerminated>false</autoTerminated></relationship><relationship><name>failure</name><description>A FlowFile is routed to this relationship if it cannot be sent to Kudu</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>record.count</name><description>Number of records written to Kudu</description></writesAttribute></writesAttributes><supportsBatching>true</supportsBatching><eventDriven>true</eventDriven><inputRequirement>INPUT_REQUIRED</inputRequirement><systemResourceConsiderations><systemResourceConsideration><resource>MEMORY</resource><description>An instance of this component can cause high usage of this system resource.  Multiple instances or high concurrency settings may result a degradation of performance.</description></systemResourceConsideration></systemResourceConsiderations></extension><extension><name>org.apache.nifi.controller.kudu.KuduLookupService</name><type>CONTROLLER_SERVICE</type><description>Lookup a record from Kudu Server associated with the specified key. Binary columns are base64 encoded. Only one matched row will be returned</description><tags><tag>lookup</tag><tag>enrich</tag><tag>key</tag><tag>value</tag><tag>kudu</tag></tags><properties><property><name>kudu-lu-masters</name><displayName>Kudu Masters</displayName><description>Comma separated addresses of the Kudu masters to connect to.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>kudu-lu-kerberos-credentials-service</name><displayName>Kerberos Credentials Service</displayName><description>Specifies the Kerberos Credentials to use for authentication</description><controllerServiceDefinition><className>org.apache.nifi.kerberos.KerberosCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>1.22.0</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>kudu-lu-operations-timeout-ms</name><displayName>Kudu Operation Timeout</displayName><description>Default timeout used for user operations (using sessions and scanners)</description><defaultValue>30000ms</defaultValue><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>kudu-lu-replica-selection</name><displayName>Kudu Replica Selection</displayName><description>Policy with which to choose amongst multiple replicas</description><defaultValue>CLOSEST_REPLICA</defaultValue><allowableValues><allowableValue><displayName>CLOSEST_REPLICA</displayName><value>CLOSEST_REPLICA</value><description>Select the closest replica to the client. Replicas are classified from closest to furthest as follows: 1) Local replicas 2) Replicas whose tablet server has the same location as the client 3) All other replicas</description></allowableValue><allowableValue><displayName>LEADER_ONLY</displayName><value>LEADER_ONLY</value><description>Select the LEADER replica</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>kudu-lu-table-name</name><displayName>Kudu Table Name</displayName><description>Name of the table to access.</description><defaultValue>default</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>kudu-lu-return-cols</name><displayName>Kudu Return Columns</displayName><description>A comma-separated list of columns to return when scanning. To return all columns set to "*"</description><defaultValue>*</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><providedServiceAPIs><providedServiceAPI><className>org.apache.nifi.lookup.RecordLookupService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>1.22.0</version></providedServiceAPI><providedServiceAPI><className>org.apache.nifi.lookup.LookupService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>1.22.0</version></providedServiceAPI></providedServiceAPIs></extension></extensions></extensionManifest>