Hey Jacek, I’ll clarify myself a bit:
As bottom line I need following metrics being reported by structured streaming:
Country-USA:7
Country-Poland: 23
Country-Brazil: 56

The country names are included in incoming events and unknown at very 
beginning/application startup.

Thus registering accumulator and binding it to metric source at driver side on 
application startup is impossible (unless you register with all possible 
country names - which is waste of Spark memory, polluting metrics namespace 
with 99% of metrics having zero value, and wasting the network bandwidth ).


Отправлено с iPhone

> 17 янв. 2021 г., в 15:56, Jacek Laskowski <ja...@japila.pl> написал(а):
> 
> 
> Hey Yurii,
> 
> > which is unavailable from executors.
> 
> Register it on the driver and use accumulators on executors to update the 
> values (on the driver)?
> 
> Pozdrawiam,
> Jacek Laskowski
> ----
> https://about.me/JacekLaskowski
> "The Internals Of" Online Books
> Follow me on https://twitter.com/jaceklaskowski
> 
> 
> 
> ‪On Sat, Jan 16, 2021 at 2:21 PM ‫Yuri Oleynikov (יורי אולייניקוב‬‎ 
> <yur...@gmail.com> wrote:‬
>> Hi all, 
>> I have a spark application with Arbitrary Stateful Aggregation implemented 
>> with FlatMapGroupsWithStateFunction.
>> 
>> I want to make some statistics about incoming events inside 
>> FlatMapGroupsWithStateFunction.
>> The statistics are made from some event property which on the one hand has 
>> dynamic values but on the other hand - small finite set (thought unknown) of 
>> values (e.g. country name).
>> 
>> So I thought to register dynamic metrics inside  
>> FlatMapGroupsWithStateFunction but as far as I understand, this requires 
>> accessing MetricsSystem via SparkEnv.get() which is unavailable from 
>> executors.
>> 
>> Any thoughts/suggestions? 
>> 
>> With best regards,
>> Yurii
>> 

Reply via email to