Name | Default | Description |
---|---|---|
channel | – | |
type | – | 组件类型名称,需要为配置单元 hive |
hive.metastore | – | Hive Metastore URI(例如 thrift://abcom:9083 ) |
hive.database | – | Hive database name |
hive.table | – | Hive table name |
hive.partition | – | 逗号分隔的分区值列表,标识要写入的分区。可能包含转义序列。例如:如果表按(大陆:字符串,国家:字符串,时间:字符串)进行分区,则 'Asia,India,2014-02-26-01-21' 将表示 continent=Asia,country=India,time=2014 -02-26-01-21 |
hive.txnsPerBatchAsk | 100 | Hive 向Flume 这样的流客户端授予一批事务而不是单个事务。此设置配置每个事务批处理所需的事务数。来自单个批次中所有事务的数据最终存储在一个文件中。Flume 将在批处理中的每个事务中写入最多的 batchSize 事件。此设置与 batchSize 结合使用可控制每个文件的大小。请注意,最终 Hive 会将这些文件透明地压缩为更大的文件。 |
heartBeatInterval | 240 | (以秒为单位)发送给Hive的连续心跳之间的间隔,以防止未使用的事务过期。将此值设置为 0 以禁用心跳。 |
autoCreatePartitions | true | Flume 将自动创建必要的 Hive 分区以流式传输到 |
batchSize | 15000 | 在单个 Hive 事务中写入 Hive 的最大事件数 |
maxOpenConnections | 500 | 仅允许此数量的打开连接。如果超过此数量,则关闭最近最少使用的连接。 |
callTimeout | 10000 | (以毫秒为单位)Hive 和 HDFS I/O 操作的超时,例如 openTxn、写入、提交、中止。 |
serializer | Serializer 负责从事件中解析出字段并将它们映射到 hive 表中的列。串行器的选择取决于事件中数据的格式。支持的序列化器:DELIMITED和JSON | |
roundUnit | minute | 向下舍入值的单位 -秒、分钟或小时。 |
roundValue | 1 | 向下舍入到此的最高倍数(以使用 hive.roundUnit 配置的单位),小于当前时间 |
timeZone | Local Time | 用于解析分区中转义序列的时区名称,例如 America/Los_Angeles。 |
useLocalTimeStamp | false | 在替换转义序列时使用本地时间(而不是来自事件标头的时间戳)。while replacing the escape sequences. |
Hive下沉提供了以下序列化器:
JSON:处理 UTF8 编码的 Json(严格语法)事件,不需要配置。JSON 中的对象名称直接映射到 Hive 表中具有相同名称的列。内部使用 org.apache.hive.hcatalog.data.JsonSerDe 但独立于 Hive 表的 Serde。此序列化程序需要安装 HCatalog。
DELIMITED:处理简单的分隔文本事件。内部使用 LazySimpleSerde 但独立于 Hive 表的 Serde。
名称 | 默认 | 描述 |
---|---|---|
serializer.delimiter | , | (类型:字符串)传入数据中的字段分隔符。要使用特殊字符,请用双引号将它们括起来,例如“ \ t” |
serializer.fieldnames | —— | 从输入字段到配置单元表中的列的映射。指定为 hive 表列名称的逗号分隔列表(无空格),按出现顺序标识输入字段。要跳过字段,请不要指定列名。例如。'time,,ip,message' 表示输入映射到 hive 表中的 time、ip 和 message 列中的第 1、第 3 和第 4 个字段。 |
serializer.serdeSeparator | Ctrl-A | (类型:字符)自定义基础Serde使用的分隔符。如果 serializer.fieldnames 中的字段与表列的顺序相同,serializer.delimiter 与 serializer.serdeSeparator 相同,并且 serializer.fieldnames 中的字段数小于或等于表数,则效率会有所提高列,因为传入事件正文中的字段不需要重新排序以匹配表列的顺序。对像 '\t' 这样的特殊字符使用单引号。确保输入字段不包含此字符。注意:如果 serializer.delimiter 是单个字符,最好将其设置为相同的字符 |
名为a1的代理的示例:
a1.channels = c1
a1.channels.c1.type = 内存
a1.sinks = k1
a1.sinks.k1.type = hive
a1.sinks.k1.channel = c1
a1.sinks.k1.hive.metastore = thrift:/ /127.0.0.1:9083
a1.sinks.k1.hive.database = logsdb
a1.sinks.k1.hive.table = weblogs
a1.sinks.k1.hive.partition = asia,%{country},%y-%m -%d-%H-%M
a1.sinks.k1.useLocalTimeStamp = false
a1.sinks.k1.round = true
a1.sinks.k1.roundValue = 10
a1.sinks.k1.roundUnit = 分钟
a1.sinks.k1.serializer = DELIMITED
a1.sinks.k1.serializer.delimiter = “\ t”的
a1.sinks.k1.serializer.serdeSeparator = '\ T'
a1.sinks.k1.serializer.fieldnames = ID ,,味精
上述配置会将时间戳舍入到最后 10 分钟。例如,时间戳标头设置为 2012 年 6 月 12 日上午 11:54:34 且“国家/地区”标头设置为“印度”的事件将评估为分区 (continent='asia',country='india',time ='2012-06-12-11-50'。序列化器被配置为接受包含三个字段的制表符分隔输入并跳过第二个字段。