https://www.getdaft.io logo
Join Slack
Powered by
# general
  • v

    VOID 001

    11/19/2025, 8:30 AM
    Hi, daft team. Is there any backpressure mechanism for pipeline to avoid OOM? for example I have a image download UDF which download image very fast, but the second UDF process each image for 20seconds. Then the image I previously downloaded (to memory) will cost a lot of memory usage. Is there any option to allow the first UDF to "slow-down" when second one is already overwhelming?
    c
    c
    • 3
    • 13
  • g

    Garrett Weaver

    11/20/2025, 9:11 PM
    ๐Ÿ‘‹ how much work would it be to add
    mode
    (most common value) to aggregations?
    c
    • 2
    • 3
  • g

    Garrett Weaver

    11/22/2025, 12:17 AM
    can y'all remind be what is best practices around UDFs. I have model in mlflow that I want to use. should I: 1. load the model from mlflow in
    __init__
    2. load the model from mlflow in my main script and pass as an argument like below
    Copy code
    @daft.cls
    class ModelPredictor:
        """Model predictor for Daft DataFrames."""
    
        def __init__(self, model: lgb.Booster, train_config: TrainConfig) -> None:
            self.model = copy.deepcopy(model)
            self.train_config = train_config
    k
    • 2
    • 16
  • p

    Phil Chen

    11/29/2025, 7:23 PM
    Quick question, does daft support iceberg table maintenance operations? If not, are there any plans to add those? Daft currently allow us to read from and write to iceberg table. Given the wide adoption of AWS glue + Iceberg table (data stored in s3 bucket), it will be highly desirable to add table maintenance features such as expiring snapshot, table compaction and garbage collection etc. That will allow community completely do away with Spark for iceberg based tables.
    j
    • 2
    • 2
  • s

    Slackbot

    12/05/2025, 6:36 PM
    This message was deleted.
    s
    a
    c
    • 4
    • 8
  • n

    Navneeth Krishnan

    12/11/2025, 2:30 PM
    Hey guys, Since Daft and Pyiceberg both donโ€™t support Merge-on-Read writes on iceberg and doesn't have support for compaction pipelines as wellโ€ฆ can we write the MOR queries using Pyspark SQL and use Spark Connect feature to run them in Daft?
    k
    • 2
    • 2
  • e

    Everett Kleven

    12/12/2025, 6:49 PM
    Most of us are familiar with the traditional ETL paradigm, but agentic search is emerging as a powerful system for working with unstructured data. Our Cofounder @jay dived deep on this topic back in November in his blog post: Agentic systems are just query engines for unstructured data https://www.daft.ai/blog/agentic-systems-are-just-query-engines-for-unstructured-data See thread for discussion:
    • 1
    • 1
  • a

    Aarjav Patni

    12/18/2025, 2:04 AM
    Not sure if this is the right place, but the links to this community on the daft homepage are restricted. I got here from the GitHub repo README.
    e
    • 2
    • 3
  • a

    Aarjav Patni

    12/18/2025, 2:04 AM
    Just wanted to bring this to the maintainersโ€™ attention
  • g

    Garrett Weaver

    12/19/2025, 6:00 PM
    Hi, I am trying to switch to
    daft.cls
    , but seeing the following error (๐Ÿงต), any ideas?
    c
    • 2
    • 7
  • g

    Garrett Weaver

    02/19/2026, 12:25 AM
    ๐Ÿ‘‹ I am seeing the following after upgrading to
    0.6.14
    , looks like the
    concat
    at micropartition level not usage of
    concat
    by me right (I am not using it fwiw)? Will share query plan
    Copy code
    File "/tmp/ray/session_2026-01-08_20-44-16_741313_1/runtime_resources/pip/4858717c93c532512d70d85304fc18c2c24c6c55/virtualenv/lib/python3.12/site-packages/daft/recordbatch/micropartition.py", line 135, in concat
     return MicroPartition._from_pymicropartition(_PyMicroPartition.concat(micropartitions))
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    daft.exceptions.DaftCoreException: DaftError::SchemaMismatch MicroPartition concat requires all schemas to match, โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
    โ”‚ column_name โ”† type โ”‚
    โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•ก
    โ”‚ __store_cluster_id_l โ”† String โ”‚
    โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
     vs โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
    โ”‚ column_name โ”† type โ”‚
    โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•ก
    โ”‚ __store_cluster_id_r โ”† String โ”‚
    โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
    s
    • 2
    • 19
  • e

    Everett Kleven

    02/23/2026, 7:43 PM
    ๐Ÿ™ We value our Contributors! ๆˆ‘ไปฌ้‡่ง†ๆฏไธ€ไฝ่ดก็Œฎ่€…๏ผ As Daft transitions into our new governance model, we want to ensure each of you are empowered to ask questions and raise concerns. A lot of this community is coordinated on Github directly, so we created this github discussion as a place to do exactly that. Additionally, please don't hesitate to reach out to me directly if there is anything I can help with.
  • g

    Garrett Weaver

    03/09/2026, 9:45 PM
    Hi team, we just upgraded kuberay and ray from
    2.35.0
    to
    2.53.0
    . We are using autoscaling clusters. One thing I am noticing is that the ray cluster is not scaling to the same number of workers after changing, leading to longer runtime. There is more work that could be done by scaling up, but seems like daft doesn't know this? Any way I could get it scale up more workers through some configuration or partitioning upfront? Trying to avoid manual scale up/down.
    ๐Ÿ’ก 1
    d
    • 2
    • 9
  • g

    Garrett Weaver

    03/11/2026, 10:04 PM
    are there any practical limitations on generator udfs (e.g. 1 row to 100k rows) or should this scale?
    c
    • 2
    • 3
  • a

    Abner Ayala

    03/13/2026, 6:42 PM
    Quick question. When I'm running the GitHub image classification example I usually use the max_concurrency to match the number of GPUs. For example if I have 8 GPUs I use max_concurrency=8. However in the Ray Cluster overview page in the Usage section I see 8 CPUs and 8 GPUs being used but each gpu worker has many cpus since I'm using like g5.48xlarge instances. I'm seeing 8/1000 cpus being used. Is that just a UI cosmetic issue or do I need to do something else so that the CPU operations like download and decode of the image use more CPUs?
    c
    • 2
    • 8
  • a

    Abner Ayala

    03/23/2026, 8:09 PM
    Hi Team
    daft.download
    has parameter on_error. Do we have a similar way to this for
    daft.File
    I wanted to use daft.File for some custom decoding of some text files but there is no guarantee that the s3 file exists. So i want to use
    daft.File(on_error=null)
    but don't seem to have this functionallity?
    โœ… 1
    e
    • 2
    • 5
  • g

    Garrett Weaver

    04/03/2026, 8:57 PM
    ๐Ÿ‘‹ I am upgrading from last 0.6 version to
    0.7.5
    and running into an error reading an parquet file with no data (I cannot get this to replicate on mac only happening when I run in argo workflows)
    d
    • 2
    • 3
  • e

    Everett Kleven

    04/07/2026, 7:02 PM
    Claude App has landed in this Slack. Click on Apps --> Manage --> Browse Apps --> Click on the Claude App --> Open App.
    ๐Ÿ™Œ 1
  • b

    Bruno Alano

    04/15/2026, 1:50 PM
    How I enable or access the Daft Dashboard? I am using it on Ray (using Anyscale) inside a workspace (persisted ray cluster)
    c
    • 2
    • 1
  • n

    Navneeth Krishnan

    04/19/2026, 6:13 AM
    Hey guys, quick question - does daft support reading bloom filters on parquet files for iceberg reads and โ€œwhereโ€ condition clauses? Assuming that writing of bloom filters at table level are already taken care ofโ€ฆ
    e
    • 2
    • 3
  • g

    Garrett Weaver

    04/22/2026, 11:05 PM
    Regarding best practices for using
    daft.func.batch
    , is it fair to say that if the batch version is just a list comprehension, it is not worth it and should just stick with
    daft.func
    ?
    c
    e
    • 3
    • 2
  • m

    Mehul Batra

    04/23/2026, 7:32 PM
    Hi folks, I'm planning to do a PoC to evaluate Daft for distributed multimodal data processing and would love pointers from the community.
    POC scope:
    - Multimodal pipelines (unstructured data + image/video + Audio) for AI workloads โ€” embedding generation + inference - Heterogeneous compute: CPU for I/O and preprocessing, GPU for model inference - Reads/writes against object storage/vectordb (Parquet/Iceberg/raw files) - Distributed UDFs (including GPU-bound ones) at scale - Autoscaling behavior under bursty workloads
    What I'm looking for:
    1. Is there a recommended cookbook / reference setup for standing up a distributed Daft cluster (Ray-based I assume)? Any opinionated deployment guides for K8s? 2. Best practices for mixed CPU/GPU worker pools: resource tagging, fractional GPU allocation per UDF, scheduling hints. 3. Patterns for embedding + inference pipelines: batching, model loading per worker, keeping GPUs saturated. 4. Autoscaling story: what works today (KubeRay autoscaler?), known gotchas. 5. Recommended read/write connectors for multimodal data at scale (images/video blobs + metadata). 6. Any PoC templates, example notebooks, or reference architectures the team points users to first. Thanks in advance!
    r
    c
    s
    • 4
    • 5
  • a

    Abner Ayala

    05/12/2026, 8:56 PM
    Hi Team CC: @Everett Kleven @Cory Grinstead @Cory Grinstead Some findings from my end, after playing around with Daft for our needs. As of today most of my pipelines start as: 1. ray.data.read_databricks_tables: using SQL syntax 2. convert to daft 3. Daft at this point is usually 1 video per row. 4. I later explode videos to images (300 frames per video) 5. I then download and decode the videos (using ray-native functions) 6. I then do preprocessing (using my own custom preprocessing functions) 7. I then do inference on different kinds of models some huge some tiny. Usually 1 model at a time. 8. I then write to parquet (append): where every image is a row Findings: 1. I always need to do into_batches immediately after explode in order to ensure the RAM doesn't get fill. a. I tried before the explode with lower values. I tried removing the into_batches and using dynamic batches, but so only into_batches immediately after explode works. b. This is usually because without it the temporary
    preprocessed_image
    (gets deleted after inference) just creates too many numpy tensors that the model cannot consume fast enough. 2. I also have switch from using daft.func for preprocessing to using daft.cls in order to always make the max_concurrency of the preprocessing be bounded to 2 * num_gpus. a. All my preprocessing are now using daft.cls with max_concurrency=num_gpus *2 b. It's my hacky way to control the queue size between preprocessing -> inference from exploding. c. this is somewhat equivalent to prefetct_factor=2 in Pytorch Dataloaders. 3. For very big models that have slow images per second I am also having to throttle the max_connection of daft download function a. why? to again ensure queue size between download + decode -> preprocess_udf does not explode. That's 3 knobs I'm having to control differently per each model or pipeline in order from not having one step in the pipeline producing a queue too large for the next step. Which makes me wonder is there is a better solution for this or if we could have more control of the queue size or not slow down one steps if it's to fast for the next one? Some possible solution: The max_in_flight or queue_size can just be a parameter for all native or user-defined daft.func and daft.cls.
    Copy code
    df = df.with_column("image_bytes", df["image_url"].url.download()).max_in_flight(64)
    df = df.with_column("image", df["image_bytes"].decode_image()).max_in_flight(32)
    df = df.with_column("preprocessed_image", preprocessing_udf(col("image"))).max_in_flight(16)
    df = df.select("*", inference_udf(...)).max_in_flight(8)
    
    The queue numbers are number of batches not number of rows.
    [download]โ”€โ”€[64]โ”€โ”€[decode]โ”€โ”€[32]โ”€โ”€[preprocess]โ”€โ”€[16]โ”€โ”€[infer]โ”€โ”€[8]โ”€โ”€[write]
                  โ†‘               โ†‘                  โ†‘              โ†‘
            image_bytes        image          preprocessed_image  predictions
            rows queued     rows queued         rows queued      rows queued
    Let me know what you guys think, hopefully this helps.
    ๐Ÿ‘ 1
    c
    j
    • 3
    • 5
  • g

    Garrett Weaver

    05/18/2026, 8:44 PM
    ๐Ÿ‘‹ do y'all have a high-level of idea of the amount of work to improve window function performance, I am seeing some high memory usage when increasing the number of window functions in a given transformation that have forced me back to Spark at this point for this specific transformation which has significantly lower memory usage and runtime, related to https://github.com/Eventual-Inc/Daft/issues/5316
    ๐Ÿ‘€ 1
    ๐Ÿ˜ฌ 1
    e
    e
    • 3
    • 5
  • n

    Navneeth Krishnan

    05/19/2026, 7:17 PM
    Hey quick question - is there a plan or a roadmap item in the coming weeks or months to migrate DAFT from Pyarrow + Pyiceberg to a more rust native implementation of the catalog and arrow-rs?
    e
    c
    • 3
    • 6
  • g

    Garrett Weaver

    05/28/2026, 4:28 AM
    Are there any known scaling issues with increasing number of joins in a single job? I have 4 dataframes (~50M rows each) that I want to join on the same key. in spark world, I would probably just increase partitioning during joins. I tried this initially, but the job seemed to get stuck at some point. Testing with
    ray runner + auto shuffle
    and
    ray runner + flight shuffle
    ๐Ÿ‘€ 1
    e
    • 2
    • 4
  • d

    Desmond Cheong

    05/30/2026, 8:02 PM
    Running on my ray cluster. Beautiful.
    โค๏ธ 8
    daft party 2
    ๐Ÿ”ฅ 1
    s
    • 2
    • 2
  • g

    Garrett Weaver

    06/03/2026, 12:08 AM
    ๐Ÿ‘‹ I am seeing
    RuntimeError: Failed to get IP addresses for actors within 120 seconds
    , despite setting this config
    daft.set_execution_config(parquet_inflation_factor=15, worker_startup_timeout=900)
    c
    • 2
    • 3
  • g

    Garrett Weaver

    06/17/2026, 5:27 PM
    Do y'all plan on benchmarking against new polars distributed https://pola.rs/posts/polars-pyspark-benchmarks/?
    j
    • 2
    • 1
  • n

    Navneeth Krishnan

    06/26/2026, 3:55 PM
    Hey guys, can someone help me with running daft the right way in kubernetes? For performing queries and operations that work on less than 5-10 GB of data, I believe running native daft runner is better. That being said from the daft documentation, what I see is that daft runs as k8s jobs. But in real scenarios, there will be AI agents or services that would want to run daft to read or write data to something like say - iceberg. I'm not sure but running a distributed compute engine within an agent or service can starve processes. Whatโ€™s the pattern in which daft native runner is used?
    j
    • 2
    • 14