Moditha Hewasinghage
09/19/2024, 10:59 AMFelix GV
09/19/2024, 1:40 PMDejan Mijic
09/19/2024, 1:45 PMFelix GV
09/19/2024, 1:49 PMDejan Mijic
09/19/2024, 1:52 PMModitha Hewasinghage
09/19/2024, 2:01 PMFelix GV
09/19/2024, 5:30 PMFelix GV
09/19/2024, 5:31 PMFelix GV
09/19/2024, 5:33 PMModitha Hewasinghage
09/19/2024, 5:36 PMFelix GV
09/19/2024, 5:41 PMFelix GV
09/19/2024, 5:43 PMKafkaKeySerializer
KafkaValueSerializerFelix GV
09/19/2024, 5:44 PMDefaultVenicePartitioner)Felix GV
09/19/2024, 5:45 PMVeniceWriter. That one should be correct as far as respecting all aspects of Venice’s protocol. However, it is still considered a private API.Felix GV
09/19/2024, 5:45 PMFelix GV
09/19/2024, 5:46 PMVeniceWriter and add some additional usability on top…Felix GV
09/19/2024, 5:50 PMFelix GV
09/19/2024, 5:51 PMModitha Hewasinghage
09/19/2024, 5:58 PMFelix GV
09/19/2024, 6:09 PMvenice-common module, in order to leverage KafkaKeySerializer, KafkaValueSerializer and `DefaultVenicePartitioner`… that would be the way to plug the Venice bits and pieces into Kafka. Although even that is not quite the full Venice protocol, because for example:
1. We support chunking large values across several Kafka messages, and reassembling them on the other side… but that part of the logic is handled by the VeniceWriter (which is also located in `venice-common`… so not an extra dependency compared to the previous option, but it is no longer the Kafka API). Technically, it is feasible to run with chunking disabled, but some of the functionalities are unsafe in combination with chunking disabled, and I think the long-term direction is probably to eventually drop support for non-chunked stores. So this would be an example where using the lower-level APIs can make future upgrades harder for you.
2. Another example is that there are some metadata around the payload, which we use for reliability (detecting transmission issues such as data loss at the Kafka level). You would need to populate those correctly, but that is also handled out of the box by the VeniceWriter.
3. Finally, we expect certain Kafka producer settings, such as max.inflight.requests = 1 for ordering guarantee reasons. Again, it can be configured manually, but it’s done out of the box with the VW.
I would say, at the very least, using the VW is the lowest level abstraction I would recommend… though like I said, even the VW is considered a private API. But at least it handles all of the important details…Nisarg Thakkar
09/19/2024, 6:24 PMModitha Hewasinghage
09/19/2024, 6:24 PMNisarg Thakkar
09/19/2024, 6:29 PMNisarg Thakkar
09/19/2024, 6:34 PMNisarg Thakkar
09/19/2024, 6:34 PMFelix GV
09/19/2024, 6:41 PMFelix GV
09/19/2024, 6:42 PMFelix GV
09/19/2024, 6:53 PMFelix GV
09/19/2024, 6:54 PMNisarg Thakkar
09/19/2024, 7:04 PMDefaultInputDataInfoProvider part that still looks at HDFS. It can be swapped out through custom InputDataInfoProvider to fetch the schema info from other places, but it's something we still haven't had a clean solution forModitha Hewasinghage
09/19/2024, 7:06 PMNisarg Thakkar
09/19/2024, 7:11 PMFelix GV
09/19/2024, 7:16 PMModitha Hewasinghage
09/20/2024, 8:44 AMNisarg Thakkar
09/20/2024, 4:11 PMDejan Mijic
03/10/2025, 8:00 AMNisarg Thakkar
03/11/2025, 1:54 PMFelix GV
03/11/2025, 3:13 PMStructType to Avro? And if so, where does that logic belong? Should the producer have Generic types, with both an Avro and another impl? Or should the producer provide only Avro, and some other lib wrap it and perform the conversion?Dejan Mijic
03/13/2025, 8:19 AMDejan Mijic
03/13/2025, 8:20 AMKacper Bielecki
03/13/2025, 8:20 AMKacper Bielecki
03/13/2025, 9:03 AMDo we need to bridge fromThis would be nice to have. We can already transform RDDs with our custom types into RDD[avro GenericRecord] + Avro schema, so if the OnlineProducer can already work with this, it might be good enough to start.toStructType?Avro
Felix GV
03/13/2025, 2:52 PMFelix GV
03/18/2025, 3:22 PMKacper Bielecki
03/19/2025, 8:12 AMNisarg Thakkar
03/19/2025, 1:52 PMStatefulSet? Do you use the operator pattern?Dmytro Prokhorenkov
03/20/2025, 10:43 AMDmytro Prokhorenkov
03/20/2025, 10:46 AMDmytro Prokhorenkov
03/20/2025, 10:47 AMDo you use the operator pattern?atm there is no operator - just simple helm chart that spin up pods.
Nisarg Thakkar
03/20/2025, 4:50 PMDmytro Prokhorenkov
03/20/2025, 5:00 PMDmytro Prokhorenkov
03/20/2025, 5:02 PMNisarg Thakkar
03/20/2025, 5:03 PMNisarg Thakkar
03/20/2025, 5:30 PMNisarg Thakkar
03/21/2025, 9:01 PMDmytro Prokhorenkov
03/22/2025, 8:50 AMNisarg Thakkar
03/22/2025, 1:13 PMFelix GV
03/27/2025, 1:48 PMKacper Bielecki
04/03/2025, 8:55 AMKacper Bielecki
06/17/2025, 6:56 AMFelix GV
06/17/2025, 7:31 AMNisarg Thakkar
06/17/2025, 5:46 PMspark-submit. We have a class with a main function that we use as an entry point and spin up an object of the VenicePushJob class
Spark jobs are a managed service at LinkedIn. The team is working on moving away from Yarn and launch jobs on k8s instead