Flume - HDFS 中的单个文件中有 2 条消息
Flume - 2 messages in a single file in HDFS
我正在尝试使用 Apache Flume 从 IBM MQ 获取消息。我得到以下配置:
# Source definition
u.sources.s1.type=jms
u.sources.s1.initialContextFactory=ABC
u.sources.s1.connectionFactory=<my connection factory>
u.sources.s1.providerURL=ABC
u.sources.s1.destinationName=r1
u.sources.s1.destinationType=QUEUE
# Channel definition
u.channels.c1.type=file
u.channels.c1.capacity=10000000
u.channels.c1.checkpointDir=/checkpointdir
u.channels.c1.transactionCapacity=10000
u.channels.c1.dataDirs=/datadir
# Sink definition
u.sinks.r1.type=hdfs
u.sinks.r1.channel=c1
u.sinks.r1.hdfs.path=/message/%Y%m%d
u.sinks.r1.hdfs.filePrefix=e_
u.sinks.r1.hdfs.fileSuffix=.xml
u.sinks.r1.hdfs.fileType = DataStream
u.sinks.r1.hdfs.writeFormat=Text
u.sinks.r1.hdfs.useLocalTimeStamp=TRUE
问题是当我接收消息时,2 条消息合并为 1 条消息。
例如:
假设 Source 发出了 3 xml 条消息:
<id>1</id><name>Test 1</name>
<id>2</id><name>Test 2</name>
<id>3</id><name>Test 3</name>
当我在 HDFS 中收到相同的消息时,在 2 xml 个文件中获取消息如下:
event_1.xml
<id>1</id><name>Test 1</name>
<id>2</id><name>Test 2</name>
event_2.xml
<id>3</id><name>Test 3</name>
预期结果是将所有 3 xml 条消息放在 HDFS 中的 3 个单独文件中,如 event_1.xml; event_2.xml; event_3.xml
在接收器中使用以下配置解决了它:
hdfs.rollSize=0
hdfs.rollInterval=1
hdfs.rollCount=1
这有助于将消息作为一条消息提取,而不是将两条消息聚合为一条消息。
我正在尝试使用 Apache Flume 从 IBM MQ 获取消息。我得到以下配置:
# Source definition
u.sources.s1.type=jms
u.sources.s1.initialContextFactory=ABC
u.sources.s1.connectionFactory=<my connection factory>
u.sources.s1.providerURL=ABC
u.sources.s1.destinationName=r1
u.sources.s1.destinationType=QUEUE
# Channel definition
u.channels.c1.type=file
u.channels.c1.capacity=10000000
u.channels.c1.checkpointDir=/checkpointdir
u.channels.c1.transactionCapacity=10000
u.channels.c1.dataDirs=/datadir
# Sink definition
u.sinks.r1.type=hdfs
u.sinks.r1.channel=c1
u.sinks.r1.hdfs.path=/message/%Y%m%d
u.sinks.r1.hdfs.filePrefix=e_
u.sinks.r1.hdfs.fileSuffix=.xml
u.sinks.r1.hdfs.fileType = DataStream
u.sinks.r1.hdfs.writeFormat=Text
u.sinks.r1.hdfs.useLocalTimeStamp=TRUE
问题是当我接收消息时,2 条消息合并为 1 条消息。
例如: 假设 Source 发出了 3 xml 条消息:
<id>1</id><name>Test 1</name>
<id>2</id><name>Test 2</name>
<id>3</id><name>Test 3</name>
当我在 HDFS 中收到相同的消息时,在 2 xml 个文件中获取消息如下:
event_1.xml
<id>1</id><name>Test 1</name>
<id>2</id><name>Test 2</name>
event_2.xml
<id>3</id><name>Test 3</name>
预期结果是将所有 3 xml 条消息放在 HDFS 中的 3 个单独文件中,如 event_1.xml; event_2.xml; event_3.xml
在接收器中使用以下配置解决了它:
hdfs.rollSize=0
hdfs.rollInterval=1
hdfs.rollCount=1
这有助于将消息作为一条消息提取,而不是将两条消息聚合为一条消息。