Garrett Weaver
09/26/2025, 5:11 PMexplode with average result being 1 row --> 12 rows and max 1 row --> 366 rows (~5m rows --> ~66m rows). Seeing decently high memory usage during the explode even with a repartition prior to explode. Is the only remedy more partitions and/or reduced number cpus to reduce parallelism?Garrett Weaver
09/26/2025, 6:39 PMdaft.func iterator worked really well for this case!Cory Grinstead
09/26/2025, 8:05 PMKevin Wang
09/26/2025, 8:06 PMGarrett Weaver
09/26/2025, 8:19 PMudf runs faster in some cases (with use_process=True). as an example, the following is taking a complex proto blob and doing some work on it to flatten into a more usable format. running in a single k8s pod with the cpu=12, memory=32gb
@daft.func(return_dtype=PROMOTION_STRUCT) # type: ignore
def parse_promo_proto_to_features_udf2(
proto_str: str
) -> dict[str, Any] | None:
....
@daft.udf(return_dtype=PROMOTION_STRUCT, use_process=True, concurrency=12)
def parse_promo_proto_to_features_udf(
promo_protos_str: daft.Series
) -> list[dict[str, Any] | None]:
...Garrett Weaver
09/26/2025, 8:21 PMdaft.udf runs ~4.5min, while daft.func runs ~20min, everything else in the job is the sameGarrett Weaver
09/26/2025, 8:22 PMCory Grinstead
09/26/2025, 8:27 PMdaft.func and getting it as fast or faster than the existing daft.udf.Cory Grinstead
09/26/2025, 8:27 PMdaft.funcGarrett Weaver
09/26/2025, 8:28 PMGarrett Weaver
09/26/2025, 8:28 PM