# data-pipeline

Published articles for data-pipeline.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Building an Operational Ontology: An E-Commerce Walkthrough

DevFeed: [Building an Operational Ontology: An E-Commerce Walkthrough](<https://devfeed.tech/articles/building-an-operational-ontology-an-e-commerce-walkthrough-18253.md>)

Original publisher: [Read original article](<https://www.dataengineeringweekly.com/p/building-an-operational-ontology>)

Author: Togo YAMANAKA

Published: 2026-08-26T14:29:30Z

Content type: tutorial

Language: en

Sources: [Data Engineering Weekly](<https://devfeed.tech/sources/data-engineering-weekly.md>)

Topics: [semantic-layer](<https://devfeed.tech/topics/semantic-layer.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [customer](<https://devfeed.tech/tags/customer.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [integration](<https://devfeed.tech/tags/integration.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [semantic-layer](<https://devfeed.tech/tags/semantic-layer.md>), [sql](<https://devfeed.tech/tags/sql.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

A walkthrough builds an operational ontology over integrated e-commerce order data from two systems with different schemas and status encodings. It models customers, orders, products, and relationships, then introduces named actions, business rules, and write-back to systems of record.

### Source excerpt

The write side of the ontology conversation: named actions, business rules, and write-back to the systems of record -- a pattern already running at enterprise scale.

## Building Menu Vision: Real-Time Dish Recognition

DevFeed: [Building Menu Vision: Real-Time Dish Recognition](<https://devfeed.tech/articles/building-menu-vision-real-time-dish-recognition-27430.md>)

Original publisher: [Read original article](<https://engineeringblog.yelp.com/2026/08/building-menu-vision-real-time-dish-recognition.html>)

Author: Arpitha Dudi, Growth Tech Lead

Published: 2026-08-20T00:00:00Z

Content type: article

Language: en

Sources: [Yelp](<https://devfeed.tech/sources/yelp.md>)

Topics: [Computer vision](<https://devfeed.tech/topics/computer-vision.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Android](<https://devfeed.tech/topics/android.md>), [cameraX](<https://devfeed.tech/topics/camerax.md>), [ML Kit](<https://devfeed.tech/topics/ml-kit.md>), [Hackathon](<https://devfeed.tech/topics/hackathon.md>), [Development](<https://devfeed.tech/topics/development.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [android](<https://devfeed.tech/tags/android.md>), [camerax](<https://devfeed.tech/tags/camerax.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [development](<https://devfeed.tech/tags/development.md>), [hackathon](<https://devfeed.tech/tags/hackathon.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ml-kit](<https://devfeed.tech/tags/ml-kit.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [prototype](<https://devfeed.tech/tags/prototype.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [recognition](<https://devfeed.tech/tags/recognition.md>), [vision](<https://devfeed.tech/tags/vision.md>)

### AI overview

Yelp describes Menu Vision, a feature that uses a phone camera, AI, augmented reality, and text recognition to identify dishes on restaurant menus and surface related user photos and reviews. The article covers its hackathon-origin Android prototype and the production system's on-device machine learning, real-time computer vision, fuzzy matching, and distributed data pipeline.

### Source excerpt

Menus aren't just lists, they're a window into a restaurant's unique offerings, specialties, and personality, shaping where and what we choose to eat. But here's the challenge: reading "Kung Pao Chicken - Stir-fried chicken with peanuts in spicy sauce" doesn't tell you what the portions look like, whether other diners loved it, or if it matches your expectations. At Yelp, we knew we had the solution sitting in our user-generated content: hundreds of millions of photos, reviews, and prices for dishes. The problem? Users had to manually search for each dish, an experience that doesn't work well when you're at...

## Chaining Activities -- from text to vectors

DevFeed: [Chaining Activities -- from text to vectors](<https://devfeed.tech/articles/chaining-activities-from-text-to-vectors-35756.md>)

Original publisher: [Read original article](<https://temporal.io/blog/chaining-activities-from-text-to-vectors>)

Author: Houman Kargaran

Published: 2026-08-12T00:00:00Z

Content type: tutorial

Language: en

Sources: [Temporal Blog](<https://devfeed.tech/sources/temporal-blog.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>), [Embeddings](<https://devfeed.tech/topics/embeddings.md>), [on-prem](<https://devfeed.tech/topics/on-prem.md>), [pii](<https://devfeed.tech/topics/pii.md>), [Redis](<https://devfeed.tech/topics/redis.md>), [retry](<https://devfeed.tech/topics/retry.md>), [Sequences](<https://devfeed.tech/topics/sequences.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [community](<https://devfeed.tech/tags/community.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [embeddings](<https://devfeed.tech/tags/embeddings.md>), [on-prem](<https://devfeed.tech/tags/on-prem.md>), [pii](<https://devfeed.tech/tags/pii.md>), [redis](<https://devfeed.tech/tags/redis.md>), [retries](<https://devfeed.tech/tags/retries.md>), [storage](<https://devfeed.tech/tags/storage.md>)

### AI overview

This guest post explains a Temporal workflow that chains discrete Activities to process complaints while maintaining a PII boundary. It uses an on-premises all-MiniLM-L6-v2 model for embeddings, caches vectors in Redis, stores them externally, and relies on deterministic workflow sequencing and retry policies.

### Source excerpt

Learn how to build a durable, PII-conscious data pipeline with Temporal using on-prem embeddings, idempotent Activities, external vector storage, and retries.

## The foundation: Why Temporal for a data pipeline?

DevFeed: [The foundation: Why Temporal for a data pipeline?](<https://devfeed.tech/articles/the-foundation-why-temporal-for-a-data-pipeline-36063.md>)

Original publisher: [Read original article](<https://temporal.io/blog/the-foundation-why-temporal-for-a-data-pipeline>)

Author: Houman Kargaran

Published: 2026-07-23T00:00:00Z

Content type: tutorial

Language: en

Sources: [Temporal Blog](<https://devfeed.tech/sources/temporal-blog.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>), [Orchestration](<https://devfeed.tech/topics/orchestration.md>), [pii](<https://devfeed.tech/topics/pii.md>), [Requirements](<https://devfeed.tech/topics/requirements.md>), [Resilience](<https://devfeed.tech/topics/resilience.md>), [consistency](<https://devfeed.tech/topics/consistency.md>), [Availability](<https://devfeed.tech/topics/availability.md>), [observability](<https://devfeed.tech/topics/observability.md>), [AI search](<https://devfeed.tech/topics/ai-search.md>), [Embeddings](<https://devfeed.tech/topics/embeddings.md>)

Tags: [auditability](<https://devfeed.tech/tags/auditability.md>), [community](<https://devfeed.tech/tags/community.md>), [compliance](<https://devfeed.tech/tags/compliance.md>), [data](<https://devfeed.tech/tags/data.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [embeddings](<https://devfeed.tech/tags/embeddings.md>), [execution](<https://devfeed.tech/tags/execution.md>), [foundation](<https://devfeed.tech/tags/foundation.md>), [requirements](<https://devfeed.tech/tags/requirements.md>), [resilience](<https://devfeed.tech/tags/resilience.md>), [search](<https://devfeed.tech/tags/search.md>), [temporal](<https://devfeed.tech/tags/temporal.md>)

### AI overview

This tutorial explains how to justify Temporal as the orchestration layer for a PII-compliant complaint-ingestion pipeline. It covers requirements for resilience, consistency, availability, observability, redaction, internal classification, and semantic search over complaint data.

### Source excerpt

How to justify Temporal for a regulated data pipeline: the requirements, the naive approach, and why Durable Execution wins on resilience and auditability.

## Data Engineering Weekly #278

DevFeed: [Data Engineering Weekly #278](<https://devfeed.tech/articles/data-engineering-weekly-278-18258.md>)

Original publisher: [Read original article](<https://www.dataengineeringweekly.com/p/data-engineering-weekly-278>)

Author: Ananth Packkildurai

Published: 2026-07-13T02:44:42Z

Content type: article

Language: en

Sources: [Data Engineering Weekly](<https://devfeed.tech/sources/data-engineering-weekly.md>)

Topics: [data-engineering](<https://devfeed.tech/topics/data-engineering.md>), [AI, ML & Data Engineering](<https://devfeed.tech/topics/ai-ml-data-engineering.md>), [Apache Spark](<https://devfeed.tech/topics/spark.md>), [Kafka](<https://devfeed.tech/topics/kafka.md>), [Data Quality](<https://devfeed.tech/topics/data-quality.md>)

Tags: [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [data-engineering](<https://devfeed.tech/tags/data-engineering.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [data-quality](<https://devfeed.tech/tags/data-quality.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [releases](<https://devfeed.tech/tags/releases.md>), [spark](<https://devfeed.tech/tags/spark.md>)

### AI overview

Data Engineering Weekly #278 is a curated newsletter covering AI-assisted engineering workflows, new leetdata.ai features, agent-oriented data systems, multilingual AI concerns, visualization with Flint, and data platform fundamentals.

### Source excerpt

The Weekly Data Engineering Newsletter

## A 15-Second Health Check for Your Heroku Connect Data Pipeline

DevFeed: [A 15-Second Health Check for Your Heroku Connect Data Pipeline](<https://devfeed.tech/articles/a-15-second-health-check-for-your-heroku-connect-data-pipeline-26410.md>)

Original publisher: [Read original article](<https://www.heroku.com/blog/health-check-for-your-heroku-connect-data-pipeline/>)

Author: Nick Prey

Published: 2026-06-24T15:35:14Z

Content type: tutorial

Language: en

Sources: [Heroku](<https://devfeed.tech/sources/heroku.md>)

Topics: [Heroku](<https://devfeed.tech/topics/heroku.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Data Management](<https://devfeed.tech/topics/data-management.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [cli](<https://devfeed.tech/tags/cli.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [heroku](<https://devfeed.tech/tags/heroku.md>), [heroku-connect](<https://devfeed.tech/tags/heroku-connect.md>), [migrations](<https://devfeed.tech/tags/migrations.md>), [salesforce](<https://devfeed.tech/tags/salesforce.md>), [schema](<https://devfeed.tech/tags/schema.md>), [synchronization](<https://devfeed.tech/tags/synchronization.md>), [troubleshooting](<https://devfeed.tech/tags/troubleshooting.md>)

### AI overview

This tutorial explains how the Heroku Connect CLI plugin's diagnostic command checks connection health, schema alignment, and field configurations in a Salesforce-to-Heroku Postgres data pipeline. It highlights how the command can expose configuration mismatches and provide actionable warnings before schema updates or migrations.

### Source excerpt

Heroku Connect is a fully managed, bidirectional data sync service between Salesforce and Heroku Postgres that lets developers read and write Salesforce data using standard SQL. The sync is straightforward to set up and operates smoothly in the background, but when a field does not update as expected or data seems to lag, you do not need to guess what went wrong. The post A 15-Second Health Check for Your Heroku Connect Data Pipeline appeared first on Heroku.

## The 5 Silent Failures in Data Pipelines

DevFeed: [The 5 Silent Failures in Data Pipelines](<https://devfeed.tech/articles/the-5-silent-failures-in-data-pipelines-37149.md>)

Original publisher: [Read original article](<https://seattledataguy.substack.com/p/the-5-silent-failures-in-data-pipelines>)

Author: SeattleDataGuy

Published: 2026-04-24T19:06:02Z

Content type: article

Language: en

Sources: [SeattleDataGuy's Newsletter](<https://devfeed.tech/sources/seattledataguy-s-newsletter.md>)

Topics: [Data pipelines](<https://devfeed.tech/topics/data-pipelines.md>), [data](<https://devfeed.tech/topics/data.md>), [CSV](<https://devfeed.tech/topics/csv.md>)

Tags: [csv](<https://devfeed.tech/tags/csv.md>), [dashboard](<https://devfeed.tech/tags/dashboard.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [data-pipelines](<https://devfeed.tech/tags/data-pipelines.md>), [pipelines](<https://devfeed.tech/tags/pipelines.md>), [reports](<https://devfeed.tech/tags/reports.md>), [schema](<https://devfeed.tech/tags/schema.md>)

### AI overview

The article explains how data pipelines can fail silently without triggering errors or obvious warnings, causing stale or incorrect data to reach dashboards and reports. It introduces schema drift as one failure mode, including unexpected changes to CSV or XML files loaded from SFTP.

### Source excerpt

How Your Pipelines Lie to You Without Throwing a Single Error

## Mapping Brazilian Cell Towers

DevFeed: [Mapping Brazilian Cell Towers](<https://devfeed.tech/articles/mapping-brazilian-cell-towers-37859.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/tem-sinal/>)

Author: Carlos Alexandro Becker

Published: 2026-03-30T18:18:07Z

Content type: opinion

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>), [Python](<https://devfeed.tech/topics/python.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Front end](<https://devfeed.tech/topics/frontend.md>)

Tags: [brazil](<https://devfeed.tech/tags/brazil.md>), [cities](<https://devfeed.tech/tags/cities.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [data](<https://devfeed.tech/tags/data.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [mapping](<https://devfeed.tech/tags/mapping.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [pages](<https://devfeed.tech/tags/pages.md>), [python](<https://devfeed.tech/tags/python.md>), [tower](<https://devfeed.tech/tags/tower.md>)

### AI overview

The author describes building temsinal.org, an open-source map of Brazilian cell towers. It combines tower data from ANATEL with population and municipality data from IBGE to help people compare infrastructure, coverage claims, and local commitments.

### Source excerpt

I was curious about how many cell towers were around me - so I built the tool I wanted.

## Data Is the Bottleneck in Many AI Projects

DevFeed: [Data Is the Bottleneck in Many AI Projects](<https://devfeed.tech/articles/the-most-important-part-of-your-ai-project-isn-t-ai-32383.md>)

Original publisher: [Read original article](<https://brianjenney.substack.com/p/the-most-important-part-of-your-ai>)

Author: Brian Jenney

Published: 2026-02-07T16:25:26Z

Content type: opinion

Language: en

Sources: [Brian Jenney](<https://devfeed.tech/sources/brian-jenney.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>), [Web Scraping](<https://devfeed.tech/topics/web-scraping.md>), [Structured-data](<https://devfeed.tech/topics/structured-data.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [data](<https://devfeed.tech/tags/data.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [grounding](<https://devfeed.tech/tags/grounding.md>), [web-scraping](<https://devfeed.tech/tags/web-scraping.md>)

### AI overview

The article argues that data collection and preparation, rather than wiring together AI components, are often the main bottlenecks in AI projects. It discusses messy real-world data, data pipelines, vector databases, and web scraping as ways to ground useful AI outputs.

### Source excerpt

This is the first Saturday I've had off in a few weeks.

## Redpanda Serverless GA: AWS PrivateLink & metrics

DevFeed: [Redpanda Serverless GA: AWS PrivateLink & metrics](<https://devfeed.tech/articles/redpanda-serverless-ga-aws-privatelink-metrics-12751.md>)

Original publisher: [Read original article](<https://www.redpanda.com/blog/redpanda-serverless-ga-aws-privatelink>)

Author: Towfiqa Yasmeen

Published: 2026-02-03T00:00:00Z

Content type: article

Language: en

Sources: [Redpanda](<https://devfeed.tech/sources/redpanda.md>)

Topics: [Serverless](<https://devfeed.tech/topics/serverless.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [Kafka](<https://devfeed.tech/topics/kafka.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>), [Security](<https://devfeed.tech/topics/security.md>), [observability](<https://devfeed.tech/topics/observability.md>), [Self-hosted](<https://devfeed.tech/topics/self-hosted.md>), [Supabase](<https://devfeed.tech/topics/supabase.md>)

Tags: [announcement](<https://devfeed.tech/tags/announcement.md>), [aws](<https://devfeed.tech/tags/aws.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [event-streaming](<https://devfeed.tech/tags/event-streaming.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [metrics](<https://devfeed.tech/tags/metrics.md>), [observability](<https://devfeed.tech/tags/observability.md>), [security](<https://devfeed.tech/tags/security.md>), [self-hosted](<https://devfeed.tech/tags/self-hosted.md>), [serverless](<https://devfeed.tech/tags/serverless.md>), [streaming](<https://devfeed.tech/tags/streaming.md>)

### AI overview

Redpanda Serverless on AWS is generally available with AWS PrivateLink, production-ready observability, elastic scaling, and a hybrid networking model that supports secure private traffic alongside a public endpoint on the same cluster. The managed, consumption-based service targets Apache Kafka-compatible streaming workloads and removes much of the operational burden of running streaming infrastructure.

### Source excerpt

Zero-ops simplicity meets enterprise-grade security to unlock production-ready data streaming for builders. Here's what's new in Redpanda Serverless.

## What It Actually Takes to Build a Data Pipeline System

DevFeed: [What It Actually Takes to Build a Data Pipeline System](<https://devfeed.tech/articles/what-it-actually-takes-to-build-a-data-pipeline-system-37152.md>)

Original publisher: [Read original article](<https://seattledataguy.substack.com/p/what-it-actually-takes-to-build-a>)

Author: SeattleDataGuy

Published: 2026-01-14T17:59:10Z

Content type: article

Language: en

Sources: [SeattleDataGuy's Newsletter](<https://devfeed.tech/sources/seattledataguy-s-newsletter.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>)

Tags: [building](<https://devfeed.tech/tags/building.md>), [components](<https://devfeed.tech/tags/components.md>), [data](<https://devfeed.tech/tags/data.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [system](<https://devfeed.tech/tags/system.md>)

### AI overview

The article breaks down the components, tradeoffs, and practical realities of building your own data pipeline system.

### Source excerpt

A breakdown of the components, tradeoffs, and realities of building your own data pipeline system

## Common Data Pipeline Patterns You'll See in the Real World

DevFeed: [Common Data Pipeline Patterns You'll See in the Real World](<https://devfeed.tech/articles/common-data-pipeline-patterns-you-ll-see-in-the-real-world-37139.md>)

Original publisher: [Read original article](<https://seattledataguy.substack.com/p/common-data-pipeline-patterns-youll>)

Author: SeattleDataGuy

Published: 2026-01-05T19:58:06Z

Content type: article

Language: en

Sources: [SeattleDataGuy's Newsletter](<https://devfeed.tech/sources/seattledataguy-s-newsletter.md>)

Topics: [Data pipelines](<https://devfeed.tech/topics/data-pipelines.md>)

Tags: [data](<https://devfeed.tech/tags/data.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [practical](<https://devfeed.tech/tags/practical.md>), [real-world](<https://devfeed.tech/tags/real-world.md>)

### AI overview

The article provides a practical overview of the different ways data pipelines appear within real companies.

### Source excerpt

A practical look at the many ways data pipelines show up inside real companies

## How we Use Dagster Automations in our Data Pipeline

DevFeed: [How we Use Dagster Automations in our Data Pipeline](<https://devfeed.tech/articles/how-we-use-dagster-automations-in-our-data-pipeline-29999.md>)

Original publisher: [Read original article](<https://engineering.freeagent.com/2025/12/10/how-we-use-dagster-automations-in-our-data-pipeline/>)

Author: Delphine Rabiller

Published: 2025-12-10T11:32:42Z

Content type: article

Language: en

Sources: [FreeAgent](<https://devfeed.tech/sources/freeagent.md>)

Topics: [Automation](<https://devfeed.tech/topics/automation.md>), [data](<https://devfeed.tech/topics/data.md>), [migration](<https://devfeed.tech/topics/migration.md>)

Tags: [analytics-engineering](<https://devfeed.tech/tags/analytics-engineering.md>), [automation](<https://devfeed.tech/tags/automation.md>), [dagster](<https://devfeed.tech/tags/dagster.md>), [data-ml](<https://devfeed.tech/tags/data-ml.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [data-pipelines](<https://devfeed.tech/tags/data-pipelines.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [migration](<https://devfeed.tech/tags/migration.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [scheduled](<https://devfeed.tech/tags/scheduled.md>), [sensors](<https://devfeed.tech/tags/sensors.md>), [tooling](<https://devfeed.tech/tags/tooling.md>), [triggers](<https://devfeed.tech/tags/triggers.md>)

### AI overview

This engineering post explains how FreeAgent is migrating data pipelines to Dagster and re-architecting its automation logic. It describes three approaches to automating asset materialization: schedules, declarative automation, and asset sensors, including when schedules are appropriate and how declarative automation uses asset dependencies and materialization status.

### Source excerpt

Introduction The heart of a reliable data platform are robust and automated data pipelines. As our team migrates our data pipelines to Dagster, re-architecting our automation logic is a crucial task. Dagster offers condition-based approaches to creating or updating a data asset (table or file), moving us toward a modern, asset-centric view of data. This [...]

## Streaming optimized data to S3 for analytics with Parquet

DevFeed: [Streaming optimized data to S3 for analytics with Parquet](<https://devfeed.tech/articles/streaming-optimized-data-to-s3-for-analytics-with-parquet-12776.md>)

Original publisher: [Read original article](<https://www.redpanda.com/blog/streaming-data-s3-analytics-parquet>)

Author: Chandler Mayo

Published: 2025-08-13T00:00:00Z

Content type: tutorial

Language: en

Sources: [Redpanda](<https://devfeed.tech/sources/redpanda.md>)

Topics: [parquet](<https://devfeed.tech/topics/parquet.md>), [Redpanda-Connect](<https://devfeed.tech/topics/redpanda-connect.md>), [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>), [data analytics](<https://devfeed.tech/topics/data-analytics.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [Apache Spark](<https://devfeed.tech/topics/spark.md>), [pandas](<https://devfeed.tech/topics/pandas.md>), [Serverless](<https://devfeed.tech/topics/serverless.md>)

Tags: [analytics](<https://devfeed.tech/tags/analytics.md>), [analytics-systems-data-feed](<https://devfeed.tech/tags/analytics-systems-data-feed.md>), [apache-spark-and-athena-data-queries](<https://devfeed.tech/tags/apache-spark-and-athena-data-queries.md>), [athena](<https://devfeed.tech/tags/athena.md>), [automating-data-pipelines-in-s3](<https://devfeed.tech/tags/automating-data-pipelines-in-s3.md>), [building-dashboards-with-s3-data](<https://devfeed.tech/tags/building-dashboards-with-s3-data.md>), [compressing-data-with-parquet](<https://devfeed.tech/tags/compressing-data-with-parquet.md>), [data](<https://devfeed.tech/tags/data.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [data-pipeline-for-analytics](<https://devfeed.tech/tags/data-pipeline-for-analytics.md>), [event-driven-pipelines-with-s3](<https://devfeed.tech/tags/event-driven-pipelines-with-s3.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [learn](<https://devfeed.tech/tags/learn.md>), [pandas](<https://devfeed.tech/tags/pandas.md>), [parquet](<https://devfeed.tech/tags/parquet.md>), [parquet-files-in-amazon-s3](<https://devfeed.tech/tags/parquet-files-in-amazon-s3.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [real-time-data-streaming](<https://devfeed.tech/tags/real-time-data-streaming.md>), [redpanda-connect](<https://devfeed.tech/tags/redpanda-connect.md>), [redpanda-data-streaming](<https://devfeed.tech/tags/redpanda-data-streaming.md>), [s3](<https://devfeed.tech/tags/s3.md>), [serverless](<https://devfeed.tech/tags/serverless.md>), [setting-up-redpanda-observability](<https://devfeed.tech/tags/setting-up-redpanda-observability.md>), [spark](<https://devfeed.tech/tags/spark.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [streaming-data-to-s3-with-parquet](<https://devfeed.tech/tags/streaming-data-to-s3-with-parquet.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This tutorial explains how to use Redpanda Connect to continuously batch streaming data and write compressed Apache Parquet files to Amazon S3 for analytical workloads. It covers the benefits of Parquet and querying the resulting files with tools such as Pandas, Apache Spark, and Athena.

### Source excerpt

Learn how to build a powerful data pipeline that feeds analytics systems from Redpanda using clean, compressed Parquet files in Amazon S3.

## Efficient MultiModal Data Pipeline

DevFeed: [Efficient MultiModal Data Pipeline](<https://devfeed.tech/articles/efficient-multimodal-data-pipeline-7355.md>)

Original publisher: [Read original article](<https://huggingface.co/blog/mmdp>)

Author: Aritra Roy Gosthipaty; Luis; Andres Marafioti; Sergio Paniego; Pedro Cuenca

Published: 2025-07-08T00:00:00Z

Content type: article

Language: en

Sources: [Hugging Face - Blog](<https://devfeed.tech/sources/hugging-face-blog.md>)

Topics: [multimodal](<https://devfeed.tech/topics/multimodal.md>), [data](<https://devfeed.tech/topics/data.md>), [datasets](<https://devfeed.tech/topics/datasets.md>), [GPU](<https://devfeed.tech/topics/gpu.md>), [Mathematics](<https://devfeed.tech/topics/mathematics.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [artificial-intelligence](<https://devfeed.tech/tags/artificial-intelligence.md>), [batching](<https://devfeed.tech/tags/batching.md>), [community](<https://devfeed.tech/tags/community.md>), [data](<https://devfeed.tech/tags/data.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [multimodal](<https://devfeed.tech/tags/multimodal.md>), [nanovlm](<https://devfeed.tech/tags/nanovlm.md>), [open](<https://devfeed.tech/tags/open.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [research](<https://devfeed.tech/tags/research.md>), [vlm](<https://devfeed.tech/tags/vlm.md>)

### AI overview

This article explains how to build an efficient multimodal data pipeline for nanoVLM training. It examines waste caused by idle GPUs and excessive padding, then introduces progressively improved data preparation and batching strategies, including a knapsack-based approach to fit more useful data into each batch.

### Source excerpt

We're on a journey to advance and democratize artificial intelligence through open source and open science.

## Rain: A key-value store for Strava's scale

DevFeed: [Rain: A key-value store for Strava's scale](<https://devfeed.tech/articles/rain-a-key-value-store-for-strava-s-scale-26575.md>)

Original publisher: [Read original article](<https://medium.com/strava-engineering/rain-a-key-value-store-for-stravas-scale-7f580f5b4848?source=rss----89d4108ce2a3---4>)

Author: Derick Yang

Published: 2025-01-24T18:02:11Z

Content type: article

Language: en

Sources: [Strava Engineering](<https://devfeed.tech/sources/strava-engineering.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>), [datasets](<https://devfeed.tech/topics/datasets.md>), [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>), [Apache Cassandra](<https://devfeed.tech/topics/cassandra.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [caching](<https://devfeed.tech/tags/caching.md>), [cassandra](<https://devfeed.tech/tags/cassandra.md>), [data](<https://devfeed.tech/tags/data.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [databases](<https://devfeed.tech/tags/databases.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [key-value-store](<https://devfeed.tech/tags/key-value-store.md>), [maps](<https://devfeed.tech/tags/maps.md>), [memory](<https://devfeed.tech/tags/memory.md>), [performance](<https://devfeed.tech/tags/performance.md>), [production](<https://devfeed.tech/tags/production.md>), [s3](<https://devfeed.tech/tags/s3.md>), [scale](<https://devfeed.tech/tags/scale.md>), [spark](<https://devfeed.tech/tags/spark.md>)

### AI overview

Strava's Geo and Metro teams work with large, immutable datasets derived from map, GPS, and third-party data. The article describes the challenges of serving these datasets and the limitations of using PalDB and Cassandra, including slow deployments, duplicated memory usage, cost constraints, and schema inflexibility.

### Source excerpt

Much of our heatmaps are built on batch data outputs stored in Rain At Strava, we love maps -- some of our most loved features are nestled on map surfaces. My team, the Geo team, is focused on building and improving these products. On the Geo and Metro teams, we tend to work with large datasets: aggregations of open source map data via OpenStreetMaps, GPS data points from uploaded activities, third-party datasets for properties like elevation, and beyond. This aggregated dataset eventually turns into Geo features we know and love, like the global heatmap, Strava Metro, the routing product, route suggestions, elevation profiles, and points of interest. We perform these data aggregations in a rather hefty data pipeline, run on a regular cadence to ensure we're serving up-to-date geo data. One of the Geo team's key challenges is efficiently serving large, immutable (write-once, read-many) datasets produced by our pipeline. This is particularly hard for compute-intensive use cases like routing, where: Write-Optimized vs. Read-Optimized Conflict: Traditional read-optimized data stores struggle with large batch writes without impacting read performance or introducing significant operational complexity. Cost Constraints: Storing rarely accessed datasets in production databases can be prohibitively expensive -- especially for projects like Strava Metro, which are accessed sporadically. Schema Complexity: Defining schemas externally from the service that uses them can be costly and inflexible for developers. Previously Our previous solution to large writes used a combination of datastores: PalDB and Cassandra. PalDB is a binary data format ideal for small datasets. The README states that it is optimized for "side data", relatively small datasets you read "in passing" on your service. PalDB is unideal, however, for larger datasets. In our case, since each service deployment required downloading the key-value file from S3, our deployments were taking upwards of twenty minutes. S

## From batch processing to streaming: AMP's data journey from open-source to ClickHouse Cloud

DevFeed: [From batch processing to streaming: AMP's data journey from open-source to ClickHouse Cloud](<https://devfeed.tech/articles/from-batch-processing-to-streaming-amp-s-data-journey-from-open-source-to-clickhouse-cloud-4942.md>)

Original publisher: [Read original article](<https://clickhouse.com/blog/amp-clickhouse-oss-to-clickhouse-cloud>)

Author: Chris Lawrence

Published: 2025-01-20T12:45:59Z

Content type: article

Language: en

Sources: [ClickHouse Blog](<https://devfeed.tech/sources/clickhouse-blog.md>)

Topics: [clickhouse](<https://devfeed.tech/topics/clickhouse.md>), [Data Infrastructure](<https://devfeed.tech/topics/data-infrastructure.md>), [real-time](<https://devfeed.tech/topics/real-time.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [Shopify](<https://devfeed.tech/topics/shopify.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [batch](<https://devfeed.tech/tags/batch.md>), [clickhouse](<https://devfeed.tech/tags/clickhouse.md>), [data-infrastructure](<https://devfeed.tech/tags/data-infrastructure.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [ecommerce](<https://devfeed.tech/tags/ecommerce.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [performance](<https://devfeed.tech/tags/performance.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [shopify](<https://devfeed.tech/tags/shopify.md>), [streaming](<https://devfeed.tech/tags/streaming.md>)

### AI overview

AMP migrated its analytics data infrastructure from a PostgreSQL-based batch workflow to ClickHouse Cloud. The change enabled real-time streaming and improved the speed and reliability of analytics for Shopify merchants as data volume and platform complexity increased.

### Source excerpt

Learn how AMP revamped its data infrastructure with ClickHouse Cloud, enabling real-time streaming for faster, more reliable analytics for Shopify merchants.

## Building a Data Pipeline to Track Strava's Bad Events

DevFeed: [Building a Data Pipeline to Track Strava's Bad Events](<https://devfeed.tech/articles/an-eventful-summer-at-strava-26571.md>)

Original publisher: [Read original article](<https://medium.com/strava-engineering/an-eventful-summer-at-strava-5692882e5f4f?source=rss----89d4108ce2a3---4>)

Author: Bisman Sodhi

Published: 2024-01-08T20:19:46Z

Content type: opinion

Language: en

Sources: [Strava Engineering](<https://devfeed.tech/sources/strava-engineering.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>), [airflow](<https://devfeed.tech/topics/airflow.md>), [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>), [Python](<https://devfeed.tech/topics/python.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>), [JSON](<https://devfeed.tech/topics/json.md>), [dashboards](<https://devfeed.tech/topics/dashboards.md>), [Computer science](<https://devfeed.tech/topics/computer-science.md>)

Tags: [airflow](<https://devfeed.tech/tags/airflow.md>), [apache-airflow](<https://devfeed.tech/tags/apache-airflow.md>), [aws](<https://devfeed.tech/tags/aws.md>), [data](<https://devfeed.tech/tags/data.md>), [data-engineering](<https://devfeed.tech/tags/data-engineering.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [data-platforms](<https://devfeed.tech/tags/data-platforms.md>), [integrity](<https://devfeed.tech/tags/integrity.md>), [json](<https://devfeed.tech/tags/json.md>), [python](<https://devfeed.tech/tags/python.md>), [s3](<https://devfeed.tech/tags/s3.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [strava](<https://devfeed.tech/tags/strava.md>), [tableau](<https://devfeed.tech/tags/tableau.md>), [warehouse](<https://devfeed.tech/tags/warehouse.md>)

### AI overview

A software engineering intern describes building a daily Apache Airflow pipeline that extracts schema-invalid user behavior events from S3, decompresses them into JSON, and loads them into Snowflake. Staging tables protect production data from partial loads, while materialized SQL views and a Tableau dashboard improve querying and monitoring.

### Source excerpt

Hi my name is Bisman and I studied Computer Science at University of California, Santa Barbara. During summer of 2022, I had the most amazing experience working as a Software Engineer Intern on Strava's Data Platform Team. In the first fews weeks, I learned the tools my team uses and then spent the rest of the time working on my project. TRACKING BAD EVENTS For my major summer project, I created a data pipeline that pulls user behavior data out of external storage and persists it in our data warehouse. Strava uses a service called Snowplow to collect this user behavior data, like loading a club page or uploading a profile photo. Sometimes, this data fails to match the schema that we've set, and a piece of data that fails this schema validation is called a bad event. Previously, these bad events were temporarily stored in an Elastic Search. Persisting this data in Snowflake, our data warehouse, makes it accessible to a wider audience. It also makes it easier to incorporate the bad events data with other services used at Strava. To start my project, I created a directed acyclic graph in Apache Airflow, a scheduling framework, using python that extracts bad events data from the S3, AWS's storage service, buckets on a daily cadence. This data was stored as gzip files on S3 which I decompressed and stored the data as JSON blobs. As I was working with billions of rows of data, it was important to maintain data integrity and take measures in case data failed to load from S3. Therefore, I loaded data into a staging table in Snowflake. The staging table ensured that if loading from S3 failed, the production table would remain untouched. This data was then loaded into the production table free of any partial data. After all the data was loaded into the production table, I created six view tables because there were six different types of bad events stored in the production table. I collaborated with our stakeholders -- data analysts -- throughout this process to craft tables bas

## How a Geo Data Pipeline Bug Disrupted Skyscanner Flight Search

DevFeed: [How a Geo Data Pipeline Bug Disrupted Skyscanner Flight Search](<https://devfeed.tech/articles/what-happened-32392.md>)

Original publisher: [Read original article](<https://medium.com/@SkyscannerEng/what-happened-f7c06f078a64?source=rss-401f3b3c958f------2>)

Author: Skyscanner Engineering

Published: 2023-11-21T11:36:51Z

Content type: article

Language: en

Sources: [Stories by Skyscanner Engineering on Medium](<https://devfeed.tech/sources/stories-by-skyscanner-engineering-on-medium.md>)

Topics: [Graphs](<https://devfeed.tech/topics/graphs.md>), [data](<https://devfeed.tech/topics/data.md>), [dataset](<https://devfeed.tech/topics/dataset.md>), [systems](<https://devfeed.tech/topics/systems.md>), [Kubernetes clusters](<https://devfeed.tech/topics/kubernetes-clusters.md>)

Tags: [bug](<https://devfeed.tech/tags/bug.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [dataset](<https://devfeed.tech/tags/dataset.md>), [graph](<https://devfeed.tech/tags/graph.md>), [issue](<https://devfeed.tech/tags/issue.md>), [kubernetes-clusters](<https://devfeed.tech/tags/kubernetes-clusters.md>), [recursion](<https://devfeed.tech/tags/recursion.md>), [systems](<https://devfeed.tech/tags/systems.md>)

### AI overview

A bug in Skyscanner's geo data materialisation process made some locations their own parents, creating loops in the location hierarchy and disrupting flight search. The article explains the geo data model and the incident's technical context.

### Source excerpt

How recursion brought down flight search at Skyscanner On 14th September, 2023 8:05 AM UTC (all timestamps in UTC) there was a critical bug in the output of our geo data pipeline which resulted in a number of geo locations being set as parents of themselves. This caused disruption to our service, and for this we're sorry. It gave us the opportunity to evaluate what went wrong, what we learned, and ways we could prevent a situation like this from happening again. Let's take a deep dive and explain things further. What is Geo Data? Geo data is a key dataset at Skyscanner which is used to provide systems, industry partners and travellers with a complete and accurate representation of the world. In simpler terms, any time you see an Airport, City, Region or Country used in Skyscanner, it's originating from this dataset. The most visible example across our offering can be seen when searching for flights where you will specify an airport, city or country for your journey. We use the geo data to populate origins/destinations and look for flights What was the issue? Skyscanner has been on a journey to upgrade our geo data set. At this time there are two versions, two geo models, running in parallel. Flights generally need to know about airports, cities, countries, contrary to other parts of the business where we need to model more complex relations such as districts, countries, islands, etc. Those relationships form a complex graph where locations are related to each others as parents and children. For this reason we kept our original "heritage" data set, merged it with our canonical dataset, our source of truth. We then basically generate (or reconstruct) our heritage dataset from the canonical data every day at 8am UTC. This generation is referred to as materialisation. The Materialisation Process On 14th September, a bug in the materialisation process updated some locations to be the parent of themselves. For example Scotland is now parent of Scotland. We've created a lo

## Implementing Data Validation with Great Expectations in Hybrid Environments

DevFeed: [Implementing Data Validation with Great Expectations in Hybrid Environments](<https://devfeed.tech/articles/implementing-data-validation-with-great-expectations-in-hybrid-environments-28036.md>)

Original publisher: [Read original article](<https://tech.trivago.com/post/2023-04-25-implementing-data-validation-with-great-expectations-in-hybrid-environments/>)

Author: Kamila Widyanto Full time DevOps; Site Reliability Engineer; Part Time Rubberduck Linkedin Profile

Published: 2023-04-25T00:00:00Z

Content type: tutorial

Language: en

Sources: [Trivago](<https://devfeed.tech/sources/trivago.md>)

Topics: [data-processing](<https://devfeed.tech/topics/data-processing.md>), [Hadoop](<https://devfeed.tech/topics/hadoop.md>), [hdfs](<https://devfeed.tech/topics/hdfs.md>), [integrity](<https://devfeed.tech/topics/integrity.md>), [Apache Spark](<https://devfeed.tech/topics/spark.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Library](<https://devfeed.tech/topics/library.md>), [Python](<https://devfeed.tech/topics/python.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [YAML](<https://devfeed.tech/topics/yaml.md>), [version-control](<https://devfeed.tech/topics/version-control.md>)

Tags: [configuration](<https://devfeed.tech/tags/configuration.md>), [data](<https://devfeed.tech/tags/data.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [data-processing](<https://devfeed.tech/tags/data-processing.md>), [data-validation](<https://devfeed.tech/tags/data-validation.md>), [devops](<https://devfeed.tech/tags/devops.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [hadoop](<https://devfeed.tech/tags/hadoop.md>), [hdfs](<https://devfeed.tech/tags/hdfs.md>), [integrity](<https://devfeed.tech/tags/integrity.md>), [json](<https://devfeed.tech/tags/json.md>), [library](<https://devfeed.tech/tags/library.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [python](<https://devfeed.tech/tags/python.md>), [version-control](<https://devfeed.tech/tags/version-control.md>), [workflow](<https://devfeed.tech/tags/workflow.md>), [yaml](<https://devfeed.tech/tags/yaml.md>)

### AI overview

This article describes implementing Great Expectations for data validation in a hybrid Hadoop environment. It explains the framework's core concepts and how the authors ran it as a PySpark job in an automated data pipeline, including configuring the Data Context for HDFS constraints.

### Source excerpt

Data validation is an essential step in any data processing pipeline, as it ensures the integrity and accuracy of the data to be used across all subsequent processing steps.

## ML Prediction Pipeline Orchestration with ML Control Center

DevFeed: [ML Prediction Pipeline Orchestration with ML Control Center](<https://devfeed.tech/articles/ml-prediction-pipeline-orchestration-with-ml-control-center-22613.md>)

Original publisher: [Read original article](<https://medium.com/glassdoor-engineering/ml-prediction-pipeline-orchestration-with-ml-control-center-812f46631484?source=rss----288d984af747---4>)

Author: Vance Thornton

Published: 2022-04-01T23:32:32Z

Content type: article

Language: en

Sources: [Glassdoor Engineering](<https://devfeed.tech/sources/glassdoor-engineering.md>)

Topics: [MLOps](<https://devfeed.tech/topics/mlops.md>), [Machine learning](<https://devfeed.tech/topics/machine-learning.md>), [YAML](<https://devfeed.tech/topics/yaml.md>), [data-processing](<https://devfeed.tech/topics/data-processing.md>), [GitOps](<https://devfeed.tech/topics/gitops.md>), [model-deployment](<https://devfeed.tech/topics/model-deployment.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Library](<https://devfeed.tech/topics/library.md>), [real-time](<https://devfeed.tech/topics/real-time.md>)

Tags: [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [data-processing](<https://devfeed.tech/tags/data-processing.md>), [gitops](<https://devfeed.tech/tags/gitops.md>), [library](<https://devfeed.tech/tags/library.md>), [low-latency](<https://devfeed.tech/tags/low-latency.md>), [machine-learning](<https://devfeed.tech/tags/machine-learning.md>), [ml](<https://devfeed.tech/tags/ml.md>), [mlops](<https://devfeed.tech/tags/mlops.md>), [mlops-platform](<https://devfeed.tech/tags/mlops-platform.md>), [models](<https://devfeed.tech/tags/models.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [orchestration](<https://devfeed.tech/tags/orchestration.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [yaml](<https://devfeed.tech/tags/yaml.md>)

### AI overview

This article describes Glassdoor's ML Control Center, an MLOps project for connecting machine learning components and orchestrating prediction pipelines. Pipelines are defined with YAML configuration, support reusable and custom components, and can run for online, near-real-time, offline batch, or automated testing use cases.

### Source excerpt

A YAML based approach for building data processing pipelinesIntroduction In a previous blog post we described Glassdoor's a la carte approach to MLOps. We chose this approach because the MLOps landscape is rapidly evolving and we want to have the flexibility to use the best available options. ML Control Center (MLCC) is a project that we are developing at Glassdoor which will act as the glue to connect and unify these disparate components. Our plan is to move to a GitOps oriented approach where YAML configuration files in our Git repositories control the deployment and execution of all the tasks and services needed for our ML projects. One part of this is support for ML prediction pipelines which we recently released as an open source project at: https://gitlab.com/glassdoor-open-source/ml-control-center. A ML prediction pipeline typically involves gathering feature data from various sources, providing the data to feature extractors and/or ML models for prediction, and then writing the output to a data store. In MLCC these pipelines are defined using YAML files which specify the configuration of the operations to perform and the flow of data input/output of those operations. One of our primary design goals is to make it easy to implement the most common use cases quickly with simple YAML configuration and minimal coding. We want to allow ML scientists and engineers to focus on defining what they want the pipeline to do with many of the engineering implementation details such as parallelization, metrics, and retry logic taken care of automatically. MLCC has a library of reusable components which provide the functionality that is typically needed for our use cases and it is easy to add custom components when needed. This approach promotes flexibility and reuse by encouraging a modular implementation. Another trend that we have seen at Glassdoor is that online and near real time ML processing is becoming more common. The design of MLCC prediction pipelines makes them w

## Integrating Confluent Schema Registry with Apache Spark applications

DevFeed: [Integrating Confluent Schema Registry with Apache Spark applications](<https://devfeed.tech/articles/integrating-confluent-schema-registry-with-apache-spark-applications-24745.md>)

Original publisher: [Read original article](<https://medium.com/yazio-engineering/integrating-confluent-schema-registry-with-apache-spark-applications-d3426e33bc51?source=rss----65bd178b00af---4>)

Author: Dominik Liebler

Published: 2022-01-24T08:04:19Z

Content type: tutorial

Language: en

Sources: [YAZIO Engineering - Medium](<https://devfeed.tech/sources/yazio-engineering-medium.md>)

Topics: [Kafka](<https://devfeed.tech/topics/kafka.md>), [Apache Spark](<https://devfeed.tech/topics/spark.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [data lake](<https://devfeed.tech/topics/data-lake.md>), [parquet](<https://devfeed.tech/topics/parquet.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [ceph](<https://devfeed.tech/topics/ceph.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>)

Tags: [apache-spark](<https://devfeed.tech/tags/apache-spark.md>), [backpressure](<https://devfeed.tech/tags/backpressure.md>), [ceph](<https://devfeed.tech/tags/ceph.md>), [confluent](<https://devfeed.tech/tags/confluent.md>), [data-engineering](<https://devfeed.tech/tags/data-engineering.md>), [data-lake](<https://devfeed.tech/tags/data-lake.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [json](<https://devfeed.tech/tags/json.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [parquet](<https://devfeed.tech/tags/parquet.md>), [payload](<https://devfeed.tech/tags/payload.md>), [pipelines](<https://devfeed.tech/tags/pipelines.md>), [schema](<https://devfeed.tech/tags/schema.md>), [schemaregistry](<https://devfeed.tech/tags/schemaregistry.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [spark](<https://devfeed.tech/tags/spark.md>), [streaming](<https://devfeed.tech/tags/streaming.md>)

### AI overview

This engineering article explains YAZIO's data pipeline from mobile and web applications through Kafka and Spark Structured Streaming into a Ceph-based data lake. It discusses why schemas matter and describes replacing JSON with Apache Avro and Confluent Schema Registry to reduce message size while keeping schema information externally stored and cached.

### Source excerpt

At YAZIO, we believe in making decisions backed by data to help people live healthier lives through better nutrition. For each new and existing feature we want to evaluate how well it performs and how our users interact with it. In order to do so, we need a lot of data and we need to handle backpressure in our systems. To cope with that we use a Kafka cluster managed by Strimzi operators running in Kubernetes. The data itself is being ingested from our mobile and web apps via HTTP or TCP endpoints serialized into JSON and stored in Kafka by a small application written in Kotlin/JVM. Overview of our data pipeline architecture At the other end of the pipeline, different Spark Structured Streaming applications (also written in Kotlin) dump this information into our data lake residing in a Ceph bucket. They read data from Kafka, deserialize it, transform some of the fields and write Parquet files into the data lake using a new schema. Why schemas? Schemas play an important role in data pipelines because they give meaning and context to data. In a world without schemas we would still do random interpretations about the context and meaning of data every now and then when using it. As you might have guessed already this would lead to a lot of bugs and misunderstandings. Photo by EJ Strat https://unsplash.com/photos/VjWi56AWQ9k Similar to a legal contract that binds you to certain limits, a schema binds the data to certain limits and meaning which narrow down the need of interpretation. Choice of serialization formats At the time of writing, Confluent Schema Registry supports these three serialization formats: Apache Avro Protocol Buffers (protobuf) JSON Schema From those choices, only two really provide more than just validation of the data that is ingested and transmitted through our data pipelines. Avro and Protobuf also allow us to shrink the sizes of our topics because only the payload is contained in a message, while the repeating schema will not be stored. In the cas

## How Working as a Product Owner Helped Me Be a Better Engineer (and vice versa)

DevFeed: [How Working as a Product Owner Helped Me Be a Better Engineer (and vice versa)](<https://devfeed.tech/articles/how-working-as-a-product-owner-helped-me-be-a-better-engineer-and-vice-versa-27998.md>)

Original publisher: [Read original article](<https://tech.trivago.com/post/2020-08-19-howworkingasaproductownerhelpedmebeabett/>)

Author: Pejman Poh

Published: 2020-08-19T00:00:00Z

Content type: article

Language: en

Sources: [Trivago](<https://devfeed.tech/sources/trivago.md>)

Topics: [Job](<https://devfeed.tech/topics/job.md>), [Learning](<https://devfeed.tech/topics/learning.md>), [Graphs](<https://devfeed.tech/topics/graphs.md>), [data](<https://devfeed.tech/topics/data.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [collaboration](<https://devfeed.tech/tags/collaboration.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [engineering-culture](<https://devfeed.tech/tags/engineering-culture.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [graph](<https://devfeed.tech/tags/graph.md>), [job](<https://devfeed.tech/tags/job.md>), [learning](<https://devfeed.tech/tags/learning.md>), [product-owner](<https://devfeed.tech/tags/product-owner.md>)

### AI overview

An engineer at trivago describes taking on a Product Owner role while remaining the sole engineer on a project. The experience involved stakeholder collaboration, KPI planning, design, and building a data pipeline that led to a price graph tested with more than 2 million people. The author explains how understanding user problems and broader company context improved their engineering practice.

### Source excerpt

Over the past few months, I was given the opportunity to try out the life of a Product Owner (PO), alongside retaining my responsibilities as an engineer. The life of a PO has always intrigued m...

## AWS SQS Pro Tip - Lower Your Costs By Batching Up Data

DevFeed: [AWS SQS Pro Tip - Lower Your Costs By Batching Up Data](<https://devfeed.tech/articles/aws-sqs-pro-tip-lower-your-costs-by-batching-up-data-28126.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/aws/2020/07/20/aws-sqs-pro-tip-lower-your-costs-by-batching-up-data.html>)

Author: Fuzzygroup

Published: 2020-07-20T00:00:00Z

Content type: tutorial

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [Amazon Simple Queue Service (SQS)](<https://devfeed.tech/topics/amazon-simple-queue-service-sqs.md>), [JSON](<https://devfeed.tech/topics/json.md>), [data](<https://devfeed.tech/topics/data.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>)

Tags: [aws](<https://devfeed.tech/tags/aws.md>), [batching](<https://devfeed.tech/tags/batching.md>), [cost](<https://devfeed.tech/tags/cost.md>), [data](<https://devfeed.tech/tags/data.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [messages](<https://devfeed.tech/tags/messages.md>), [sqs](<https://devfeed.tech/tags/sqs.md>)

### AI overview

The article describes batching small JSON blobs into larger messages before sending them to Amazon SQS. It explains measuring blob sizes, building arrays below the 256,000-byte packet limit, serializing them as JSON, and unpacking them when received. The approach adds queue-processing overhead but reduced costs for a large-scale data pipeline.

### Source excerpt

This one is a short one but a good one. I've been using SQS (disclaimer - I love SQS) lately for a large scale data pipeline. We are processing literally billions of small JSON blobs and in our cost modeling, we initially came up with an estimate that made SQS something that we couldn't use because of the number of JSON blobs. And then one of our people, thank you Don Neufeld, came up with the idea of batching up the JSON blobs and having SQS give us a batch that we could process. And while this did complicate our queue processing a bit, it made SQS cost effective. Here were the key things: When we initially loaded the queue, we measured each blob's length and then built an array of blobs until we were just below the maximum packet size, 256_000 bytes. We then serialized the array into JSON and gave that JSON to SQS. Our routine which read things back off the queue looked something like this: messages = sqs_client.receive_message(QueueUrl=input_queue.url, MaxNumberOfMessages=MAX_QUEUE_MESSAGES) if 'Messages' in messages: # when the queue is exhausted, the response dict contains no 'Messages' key for message in messages['Messages']: # 'Messages' is a list message_bodies = json.loads(message['Body']) for json_str in message_bodies: Yes this was a bit more overhead but it has worked tremendously well and let us take full advantage of SQS without running up a huge bill. Recommended.

[Next page](<https://devfeed.tech/tags/data-pipeline.md?cursor=WyIyMDIwLTA3LTIwVDAwOjAwOjAwKzAwOjAwIiwgIjZmZjJhYzQzLWE0NDQtNDlkOC1iN2UzLTEzOGJlOTI3Yjg1ZSJd>)