perl-Kafka::Producer,“Producer”;卡夫卡::例外::制作人“&引用;代码"-1000,”;讯息「&引用;无效参数
我使用kafka perl api编写了kafka producer,但在传递用于发送消息的变量时出错,而如果对消息数据进行硬编码,则不会出现任何错误 Perl程序,其中我添加了kafka生产者代码:perl-Kafka::Producer,“Producer”;卡夫卡::例外::制作人“&引用;代码"-1000,”;讯息「&引用;无效参数,perl,apache-kafka,Perl,Apache Kafka,我使用kafka perl api编写了kafka producer,但在传递用于发送消息的变量时出错,而如果对消息数据进行硬编码,则不会出现任何错误 Perl程序,其中我添加了kafka生产者代码: try { $kafka_connection = Kafka::Connection->new( host => $hadoop_server, port => '6667' ); $producer = Kafka::Producer->new( Con
try {
$kafka_connection = Kafka::Connection->new( host => $hadoop_server, port => '6667' );
$producer = Kafka::Producer->new( Connection => $kafka_connection );
my $topic = 'test1';
my $partition = 0;
my $message = $hadoop_str;
my $response = $producer->send(
$topic, # topic
$partition, # partition
#"56b4b2b23c24c3608376d1ea,/obj/i386/ui/lib/access/daemon_map.So.gcda,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0" # message
$hadoop_str
#"t1,f9,1,1,1"
);
} catch {
my $error = $_;
if ( blessed( $error ) && $error->isa( 'Kafka::Exception' ) ) {
warn 'Error: (', $error->code, ') ', $error->message, "\n";
exit;
} else {
die $error;
}
};
# CCLib::run_system_cmd( $cmd );
}
错误日志:
-bash-3.2$ ./stream_binary_hadoop.pl
print (...) interpreted as function at ./stream_binary_hadoop.pl line 429.
<UNKNOWN> <UNKNOWN> Invalid argument: message = 56b4b2b23c24c3608376d1ea,/obj/i386/junos/usr.sbin/lmpd/lmpd_repl_msg_idr.gcda,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 at /opt/adp/projects/code_coverage/perl//5.10/lib/site_perl/5.10.1/Exception/Class/Base.pm line 85.
Exception::Class::Base::throw("Kafka::Exception::Producer", "code", -1000, "message", "Invalid argument: message = 56b4b2b23c24c3608376d1ea,/obj/i38"...) called at /opt/adp/projects/code_coverage/perl//5.10/lib/site_perl/5.10.1/Kafka/Producer.pm line 374
Kafka::Producer::_error(Kafka::Producer=HASH(0x36955f8), -1000, "message = 56b4b2b23c24c3608376d1ea,/obj/i386/junos/usr.sbin/l"...) called at /opt/adp/projects/code_coverage/perl//5.10/lib/site_perl/5.10.1/Kafka/Producer.pm line 331
Kafka::Producer::send(Kafka::Producer=HASH(0x36955f8), "test1", 0, "56b4b2b23c24c3608376d1ea,/obj/i386/junos/usr.sbin/lmpd/lmpd_r"...) called at ./stream_binary_hadoop.pl line 175
main::try {...} () called at /opt/adp/projects/code_coverage/perl//5.10/lib/site_perl/5.10.1/Try/Tiny.pm line 81
eval {...} called at /opt/adp/projects/code_coverage/perl//5.10/lib/site_perl/5.10.1/Try/Tiny.pm line 72
Try::Tiny::try(CODE(0x3692888), Try::Tiny::Catch=REF(0x3692c78)) called at ./stream_binary_hadoop.pl line 190
main::stream(HASH(0x3692708)) called at ./stream_binary_hadoop.pl line 354
main::file_split(HASH(0x36927b0)) called at ./stream_binary_hadoop.pl line 413
at ./stream_binary_hadoop.pl line 188.
main::catch {...} ("<UNKNOWN> Invalid argument: message = 56b4b2b23c24c3608376d1e"...) called at /opt/adp/projects/code_coverage/perl//5.10/lib/site_perl/5.10.1/Try/Tiny.pm line 104
Try::Tiny::try(CODE(0x3692888), Try::Tiny::Catch=REF(0x3692c78)) called at ./stream_binary_hadoop.pl line 190
main::stream(HASH(0x3692708)) called at ./stream_binary_hadoop.pl line 354
main::file_split(HASH(0x36927b0)) called at ./stream_binary_hadoop.pl line 413
-bash-3.2$./stream\u binary\u hadoop.pl
print(…)在./stream_binary_hadoop.pl第429行被解释为函数。
无效参数:message=56b4b2b23c24c3608376d1ea,/obj/i386/junos/usr.sbin/lmpd/lmpd_repl_msg_idr.gcda,0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0在/opt/adp/projects/code_coverage/perl//5.10/lib/site_perl/5.10.1/Exception/Class/Base.pm第85行。
在/opt/adp/projects/code\u coverage/perl//5.10/lib/site\u perl/5.10.1/Kafka/Producer.pm第374行调用异常::类::基::抛出(“Kafka::异常::生产者”,“代码”,-1000,“消息”,“无效参数:message=56b4b2b2b23c24c608376d1ea,/obj/i38…”)
Kafka::Producer::(Kafka::Producer=HASH(0x36955f8),-1000,“message=56b4b2b23c24c3608376d1ea,/obj/i386/junos/usr.sbin/l…”调用/opt/adp/projects/code_coverage/perl//5.10/lib/site_perl/5.10.1/Kafka/Producer.pment.331行
Kafka::Producer::send(Kafka::Producer=HASH(0x36955f8),“test1”,0,“56b4b2b23c24c368376d1ea,/obj/i386/junos/usr.sbin/lmpd/lmpd_r…”调用于./stream_binary_hadoop.pl行175
main::try{…}()在/opt/adp/projects/code_coverage/perl//5.10/lib/site_perl/5.10.1/try/Tiny.pm第81行调用
eval{…}在/opt/adp/projects/code_coverage/perl//5.10/lib/site_perl/5.10.1/Try/Tiny.pm第72行调用
Try::Tiny::Try(代码(0x3692888),Try::Tiny::Catch=REF(0x3692c78))在./stream\u binary\u hadoop.pl第190行调用
main::在./stream_binary_hadoop.pl第354行调用的流(散列(0x3692708))
main::在./stream_binary_hadoop.pl行413调用文件_split(散列(0x36927b0))
在./stream\u binary\u hadoop.pl第188行。
main::catch{…}(“无效参数:message=56b4b2b23c24c3608376d1e”…)在/opt/adp/projects/code_coverage/perl//5.10/lib/site_perl/5.10.1/Try/Tiny.pm第104行调用
Try::Tiny::Try(代码(0x3692888),Try::Tiny::Catch=REF(0x3692c78))在./stream\u binary\u hadoop.pl第190行调用
main::在./stream_binary_hadoop.pl第354行调用的流(散列(0x3692708))
main::在./stream_binary_hadoop.pl行413调用文件_split(散列(0x36927b0))
我可以通过使用utf8::降级包装字符串来解决这个问题。不知怎的,它把我的字符串作为utf-8,卡夫卡制作人,检查了是否需要非utf-8字符串
我的工作代码:
my $arcs_val = join( ',', @arc_a );
my $hadoop_str = $testid . ',' . $gcda_file_name . ',' . $arcs_val;
utf8::downgrade($hadoop_str);
try {
my $topic = $inputs[0];
my $partition = $inputs[1];
my $response = $producer->send(
$topic, # topic
$partition, # partition
$hadoop_str
);