Java 返回Kafka结果时的ArrayIndexOutOfBoundsException
我正在用Java开发一个自定义Talend组件来读取卡夫卡主题中的数据,我的目标是实时处理这些数据并将其写入文件 当我获得的数据不是太大时,我的Java代码正在工作,否则我会出现以下错误: 我知道我发送的数据太大,所以我有两个问题:Java 返回Kafka结果时的ArrayIndexOutOfBoundsException,java,apache-kafka,talend,Java,Apache Kafka,Talend,我正在用Java开发一个自定义Talend组件来读取卡夫卡主题中的数据,我的目标是实时处理这些数据并将其写入文件 当我获得的数据不是太大时,我的Java代码正在工作,否则我会出现以下错误: 我知道我发送的数据太大,所以我有两个问题: 有没有办法增加我发送的数据的最大大小 如何优化我的代码:在下面的代码中,我能够计算每次轮询中从卡夫卡获得的行数,我认为我可以分割数据(例如10/10),但问题是我只能使用“return”一次,这就是为什么我在循环之后发送所有内容 以下是我的Java代码: @P
- 有没有办法增加我发送的数据的最大大小
- 如何优化我的代码:在下面的代码中,我能够计算每次轮询中从卡夫卡获得的行数,我认为我可以分割数据(例如10/10),但问题是我只能使用“return”一次,这就是为什么我在循环之后发送所有内容
@Producer
public Record next() {
while (true){
ConsumerRecords<String, Object> records = consumer.poll(Duration.ofMillis(10));
System.out.println("new poll");
ArrayList<String> elements = new ArrayList<>();
Integer count = 0;
for (ConsumerRecord<String, Object> record : records) {
count ++;
String current_line = record.value().toString();
JSONObject jsonObject = new JSONObject(current_line);
test = jsonObject.get("type").toString();
elements.add(current_line);
System.out.println("in= " + test);
}
System.out.println("count = " + count.toString());
if (elements.size()>0) {
return builderFactory.newRecordBuilder().withString("name", elements.toString()).build();
}
consumer.commitAsync();
}
}
@制作人
公共记录下一页(){
while(true){
ConsumerRecords记录=consumer.poll(持续时间:百万分之十);
System.out.println(“新投票”);
ArrayList元素=新的ArrayList();
整数计数=0;
对于(消费者记录:记录){
计数++;
字符串current_line=record.value().toString();
JSONObject JSONObject=新JSONObject(当前_行);
test=jsonObject.get(“type”).toString();
元素。添加(当前_行);
System.out.println(“in=”+测试);
}
System.out.println(“count=“+count.toString());
if(elements.size()>0){
返回builderFactory.newRecordBuilder();
}
consumer.commitAsync();
}
}
谢谢你的帮助
问候,
Thomas编辑内存和JVM设置 要在运行时和启动Talend Studio时提高性能,可以编辑.ini文件中的内存设置 默认情况下,.ini文件设置以下JVM参数: --launcher.XXMaxPermSize512m -vmargs -Xms64m -Xmx768m -Xdock:icon=../Resources/talend.icns -XstartOnFirstThread -文件编码=UTF-8 64位系统上有8 GB的可用内存,最佳设置可以是: --launcher.XXMaxPermSize512m -vmargs -Xms2014m -Xmx4096m -XstartOnFirstThread
-Dfile.encoding=UTF-8您好,托马斯,您是否尝试增加JVM参数并查看问题是否持续谢谢@AmineBenKhelifa,您是对的,增加RAM内存解决了问题,谢谢:)您可以将主题标记为已解决,如果这是解决方案?