#
#
#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#
#

##### Storm #####

topology.worker.childopts=
topology.auto-credentials=
profiler.workers=1
profiler.acker.executors=1
profiler.spout.parallelism=1
profiler.splitter.parallelism=1
profiler.builder.parallelism=1
profiler.hbase.writer.parallelism=1
profiler.kafka.writer.parallelism=1
topology.message.timeout.secs=30
topology.max.spout.pending=100000
topology.fall.back.on.java.serialization=true
topology.testing.always.try.serialize=false
topology.kryo.register=[ org.apache.metron.profiler.ProfileMeasurement, \
    org.apache.metron.profiler.ProfilePeriod, \
    org.apache.metron.common.configuration.profiler.ProfileResult, \
    org.apache.metron.common.configuration.profiler.ProfileResultExpressions, \
    org.apache.metron.common.configuration.profiler.ProfileTriageExpressions, \
    org.apache.metron.common.configuration.profiler.ProfilerConfig, \
    org.apache.metron.common.configuration.profiler.ProfileConfig, \
    org.json.simple.JSONObject, \
    org.json.simple.JSONArray, \
    java.util.LinkedHashMap, \
    org.apache.metron.statistics.OnlineStatisticsProvider ]

##### Profiler #####

profiler.input.topic=indexing
profiler.output.topic=enrichments
profiler.period.duration=15
profiler.period.duration.units=MINUTES
profiler.window.duration=30
profiler.window.duration.units=SECONDS
profiler.ttl=30
profiler.ttl.units=MINUTES
profiler.window.lag=1
profiler.window.lag.units=MINUTES
profiler.max.routes.per.bolt=10000

##### HBase #####

profiler.hbase.salt.divisor=1000
profiler.hbase.table=profiler
profiler.hbase.column.family=P
profiler.hbase.batch=10
profiler.hbase.flush.interval.seconds=30

##### Kafka #####

kafka.zk=node1:2181
kafka.broker=node1:6667
# One of EARLIEST, LATEST, UNCOMMITTED_EARLIEST, UNCOMMITTED_LATEST
kafka.start=UNCOMMITTED_EARLIEST
kafka.security.protocol=PLAINTEXT
