Support Questions
Find answers, ask questions, and share your expertise
Announcements
Alert: Welcome to the Unified Cloudera Community. Former HCC members be sure to read and learn how to activate your account here.

Parse Exception at SplitterBolt in Profiler Topology

Highlighted

Parse Exception at SplitterBolt in Profiler Topology

New Contributor

Hi,

I defined a profile definition for my requirement to perform profile statistics. The calculation of profiler statistics for current profiling period will depend on the previous profile flushed stats.

So, I am trying to read the previous stats during initialization ( “init” field in json ) part of profile for the current profiling period.

The definition works fine when there are profile stats from the previous period, which means my profile definition working fine for first 15 minutes (my profile period is set to 15 mins). When profiler flushes the profile stats into hbase for first 15 minutes and starts for next period, I am getting the parse exception as seen in attached doc at Profiler topology and SplitterBolt.

I have executed all lines of code in the stellar shell (instantiated with zookeeper config ./bin/stellat –z XXXX). It works fine without any issues in all the cases. Which means, I am able to fetch the previous profile stats, initialize for current record and execute all lines of code in profiler definition with expected result.

I could not able to figure out what else is going wrong during SplitterBolt execution. I request someone to go through the attached logs and help me to troubleshoot the issue further.

High Level Exception stack trace:

*************************************** Exception seen at profiler topology logs *******************************

2018-04-27 10:56:06.483 o.a.h.m.s.s.StormTimelineMetricsSink Thread-23 [WARN] Unable to send metrics to collector by address:http://null:6188/ws/v1/timeline/metrics

2018-04-27 10:57:16.575 o.a.m.p.b.ProfileSplitterBolt Thread-6-splitterBolt-executor[7 7] [ERROR] Unexpected failure: message='null', tuple='{value=[123,***********Lot of integer values here in the logs end with****34, 48, 34, 125]}'

org.json.simple.parser.ParseException: null

at org.json.simple.parser.Yylex.yylex(Yylex.java:610) ~[stormjar.jar:?]

at org.json.simple.parser.JSONParser.nextToken(JSONParser.java:269) ~[stormjar.jar:?]

at org.json.simple.parser.JSONParser.parse(JSONParser.java:118) ~[stormjar.jar:?]

at org.json.simple.parser.JSONParser.parse(JSONParser.java:81) ~[stormjar.jar:?]

at org.json.simple.parser.JSONParser.parse(JSONParser.java:75) ~[stormjar.jar:?]

at org.apache.metron.profiler.bolt.ProfileSplitterBolt.doExecute(ProfileSplitterBolt.java:108) ~[stormjar.jar:?]

at org.apache.metron.profiler.bolt.ProfileSplitterBolt.execute(ProfileSplitterBolt.java:94) [stormjar.jar:?]

at org.apache.storm.daemon.executor$fn__10250$tuple_action_fn__10252.invoke(executor.clj:730) [storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235]

at org.apache.storm.daemon.executor$mk_task_receiver$fn__10171.invoke(executor.clj:462) [storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235]

at org.apache.storm.disruptor$clojure_handler$reify__9685.onEvent(disruptor.clj:40) [storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235]

at org.apache.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:472) [storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235]

at org.apache.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:451) [storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235]

at org.apache.storm.disruptor$consume_batch_when_available.invoke(disruptor.clj:73) [storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235]

at org.apache.storm.daemon.executor$fn__10250$fn__10263$fn__10316.invoke(executor.clj:849) [storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235]

at org.apache.storm.util$async_loop$fn__553.invoke(util.clj:484) [storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235]

at clojure.lang.AFn.run(AFn.java:22) [clojure-1.7.0.jar:?]

at java.lang.Thread.run(Thread.java:748) [?:1.8.0_161]

****************************** Exception at SplitterBolt: ***********************

Unexpected character (.) at position 885. at org.json.simple.parser.Yylex.yylex(Yylex.java:610) at org.json.simple.parser.JSONParser.nextToken(JSONParser.java:269) at org.json.simple.parser.JSONParser.parse(JSONParser.java:118) at org.json.simple.parser.JSONParser.parse(JSONParser.java:81) at org.json.simple.parser.JSONParser.parse(JSONParser.java:75) at org.apache.metron.profiler.bolt.ProfileSplitterBolt.doExecute(ProfileSplitterBolt.java:108) at org.apache.metron.profiler.bolt.ProfileSplitterBolt.execute(ProfileSplitterBolt.java:94) at org.apache.storm.daemon.executor$fn__10250$tuple_action_fn__10252.invoke(executor.clj:730) at org.apache.storm.daemon.executor$mk_task_receiver$fn__10171.invoke(executor.clj:462) at org.apache.storm.disruptor$clojure_handler$reify__9685.onEvent(disruptor.clj:40) at org.apache.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:472) at org.apache.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:451) at org.apache.storm.disruptor$consume_batch_when_available.invoke(disruptor.clj:73) at org.apache.storm.daemon.executor$fn__10250$fn__10263$fn__10316.invoke(executor.clj:849) at org.apache.storm.util$async_loop$fn__553.invoke(util.clj:484) at clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:748)

@nallen @asubramanian your help is much appreciatedprofile-test-def.txtprofilertopology-exception-logs.txt

Thanking you in advance.

Don't have an account?
Coming from Hortonworks? Activate your account here