flume-2消息在hdfs中的单个文件中

n3ipq98p  于 2021-06-04  发布在  Flume
关注(0)|答案(1)|浏览(320)

我正在尝试使用apacheflume从ibmq接收消息。我得到了以下配置:


# 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条消息被合并成一条消息。
例如:假设源发送3条xml消息: <id>1</id><name>Test 1</name> 2Test 2 <id>3</id><name>Test 3</name> 当我在hdfs中接收到相同的消息时,请按如下方式在2个xml文件中获取消息:
事件1.xml

<id>1</id><name>Test 1</name>
<id>2</id><name>Test 2</name>

事件2.xml

<id>3</id><name>Test 3</name>

预期的结果是将所有3条xml消息放在hdfs中的3个单独的文件中,如event\ 1.xml;事件2.xml;事件3.xml

6uxekuva

6uxekuva1#

使用Flume中的以下配置解决了此问题:

hdfs.rollSize=0
hdfs.rollInterval=1
hdfs.rollCount=1

这有助于将消息作为单个消息接收,而不是将两个消息聚合为一个消息。

相关问题