This is an automated email from the ASF dual-hosted git repository.

xqhu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git


The following commit(s) were added to refs/heads/master by this push:
     new 42aed71971a blog: GSoC 2025 - Beam YAML, Kafka and Iceberg User 
Accessibility (#36233)
42aed71971a is described below

commit 42aed71971a442e7d195819933798f3d5f9556f4
Author: Charles Nguyen <[email protected]>
AuthorDate: Mon Sep 22 15:12:39 2025 -0400

    blog: GSoC 2025 - Beam YAML, Kafka and Iceberg User Accessibility (#36233)
    
    * blog: GSoC 2025 - Beam YAML, Kafka and Iceberg User Accessibility
    
    * fixup! blog: GSoC 2025 - Beam YAML, Kafka and Iceberg User Accessibility
    
    * typo
    
    * Touch up with more details
    
    * Typos and touch up with more details
---
 .../en/blog/gsoc-25-yaml-user-accessibility.md     | 113 +++++++++++++++++++++
 1 file changed, 113 insertions(+)

diff --git 
a/website/www/site/content/en/blog/gsoc-25-yaml-user-accessibility.md 
b/website/www/site/content/en/blog/gsoc-25-yaml-user-accessibility.md
new file mode 100644
index 00000000000..2c4704ee497
--- /dev/null
+++ b/website/www/site/content/en/blog/gsoc-25-yaml-user-accessibility.md
@@ -0,0 +1,113 @@
+---
+title:  "Google Summer of Code 2025 - Beam YAML, Kafka and Iceberg User
+Accessibility"
+date:   2025-09-23 00:00:00 -0400
+categories:
+  - blog
+  - gsoc
+aliases:
+  - /blog/2025/09/23/gsoc-25-yaml-user-accessibility.html
+authors:
+  - charlespnh
+
+---
+<!--
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+The relatively new Beam YAML SDK was introduced in the spirit of making data 
processing easy,
+but it has gained little adoption for complex ML tasks and hasn’t been widely 
used with
+[Managed I/O](beam.apache.org/documentation/io/managed-io/) such as Kafka and 
Iceberg.
+As part of Google Summer of Code 2025, new illustrative, production-ready 
pipeline examples
+of ML use cases with Kafka and Iceberg data sources using the YAML SDK have 
been developed
+to address this adoption gap.
+
+## Context
+The YAML SDK was introduced in Spring 2024 as Beam’s first no-code SDK. It 
follows a declarative approach
+of defining a data processing pipeline using a YAML DSL, as opposed to other 
programming language specific SDKs.
+At the time, it had few meaningful examples and documentation to go along with 
it. Key missing examples
+were ML workflows and integration with the Kafka and Iceberg Managed I/O. 
Foundational work had already been done
+to add support for ML capabilities as well as Kafka and Iceberg IO connectors 
in the YAML SDK, but there were no
+end-to-end examples demonstrating their usage.
+
+Beam, as well as Kafka and Iceberg, are mainstream big data technologies but 
they also have a learning curve.
+The overall theme of the project is to help democratize data processing for 
scientists and analysts who traditionally
+don’t have a strong background in software engineering. They can now refer to 
these meaningful examples as the starting point,
+helping them onboard faster and be more productive when authoring ML/data 
pipelines to their use cases with Beam and its YAML DSL.
+
+## Contributions
+The data pipelines/workflows developed are production-ready: Kafka and Iceberg 
data sources are set up on GCP,
+and the data used are raw public datasets. The pipelines are tested end-to-end 
on Google Cloud Dataflow and
+are also unit tested to ensure correct transformation logic.
+
+Delivered pipelines/workflows, each with documentation as README.md, address 4 
main ML use cases below:
+
+1. **Streaming Classification Inference**: A streaming ML pipeline that 
demonstrates Beam YAML capability to perform
+classification inference on a stream of incoming data from Kafka. The overall 
workflow also includes
+DistilBERT model deployment and serving on Google Cloud Vertex AI where the 
pipeline can access for remote inferences.
+The pipeline is applied to a sentiment analysis task on a stream of YouTube 
comments, preprocessing data and classifying
+whether a comment is positive or negative. See 
[pipeline](https://github.com/apache/beam/blob/master/sdks/python/apache_beam/yaml/examples/transforms/ml/sentiment_analysis/streaming_sentiment_analysis.yaml)
 and 
[documentation](https://github.com/apache/beam/tree/master/sdks/python/apache_beam/yaml/examples/transforms/ml/sentiment_analysis).
+
+
+2. **Streaming Regression Inference**: A streaming ML pipeline that 
demonstrates Beam YAML capability to perform
+regression inference on a stream of incoming data from Kafka. The overall 
workflow also includes
+custom model training, deployment and serving on Google Cloud Vertex AI where 
the pipeline can access for remote inferences.
+The pipeline is applied to a regression task on a stream of taxi rides, 
preprocessing data and predicting the fare amount
+for every ride. See 
[pipeline](https://github.com/apache/beam/blob/master/sdks/python/apache_beam/yaml/examples/transforms/ml/taxi_fare/streaming_taxifare_prediction.yaml)
 and 
[documentation](https://github.com/apache/beam/tree/master/sdks/python/apache_beam/yaml/examples/transforms/ml/taxi_fare).
+
+
+3. **Batch Anomaly Detection**: A ML workflow that demonstrates ML-specific 
transformations
+and reading from/writing to Iceberg IO. The workflow contains unsupervised 
model training and several pipelines that leverage
+Iceberg for storing results, BigQuery for storing vector embeddings and 
MLTransform for computing embeddings to demonstrate
+an end-to-end anomaly detection workflow on a dataset of system logs. See 
[workflow](https://github.com/apache/beam/blob/master/sdks/python/apache_beam/yaml/examples/transforms/ml/log_analysis/batch_log_analysis.sh)
 and 
[documentation](https://github.com/apache/beam/tree/master/sdks/python/apache_beam/yaml/examples/transforms/ml/log_analysis).
+
+
+4. **Feature Engineering & Model Evaluation**: A ML workflow that demonstrates 
Beam YAML capability to do feature engineering
+which is subsequently used for model evaluation, and its integration with 
Iceberg IO. The workflow contains model training
+and several pipelines, showcasing an end-to-end Fraud Detection MLOps solution 
that generates features and evaluates models
+to detect credit card transaction frauds. See 
[workflow](https://github.com/apache/beam/blob/master/sdks/python/apache_beam/yaml/examples/transforms/ml/fraud_detection/fraud_detection_mlops_beam_yaml_sdk.ipynb)
 and 
[documentation](https://github.com/apache/beam/tree/master/sdks/python/apache_beam/yaml/examples/transforms/ml/fraud_detection).
+
+## Challenges
+The main challenge of the project was a lack of previous YAML pipeline 
examples and good documentation to rely on.
+Unlike the Python or Java SDKs where there are already many notebooks and 
end-to-end examples demonstrating various use cases,
+the examples for YAML SDK only involved simple transformations such as filter, 
group by, etc. More complex transforms like
+`MLTransform` and `ReadFromIceberg` had no examples and requires 
configurations that didn't have clear API reference at the time.
+As a result, there were a lot of deep dives into the actual implementation of 
the PTransforms across YAML, Python and Java SDKs to
+understand the error messages and how to correctly use the transforms.
+
+Another challenge was writing unit tests for the pipeline to ensure that the 
pipeline’s logic is correct.
+It was a learning curve to understand how the existing test suite is set up 
and how it can be used to write unit tests for
+the data pipelines. A lot of time was spent on properly writing mocks for the 
pipeline's sources and sinks, as well as for the
+transforms that require external services such as Vertex AI.
+
+## Conclusion & Personal Thoughts
+These production-ready pipelines demonstrate the potential of Beam YAML SDK to 
author complex ML workflows
+that interact with Iceberg and Kafka. The examples are a nice addition to 
Beam, especially with Beam 3.0.0 milestones
+coming up where low-code/no-code, ML capabilities and Managed I/O are focused 
on.
+
+I had an amazing time working with the big data technologies Beam, Iceberg, 
and Kafka as well as many Google Cloud services
+(Dataflow, Vertex AI and Google Kubernetes Engine, to name a few). I’ve always 
wanted to work more in the ML space, and this
+experience has been a great growth opportunity for me. Google Summer of Code 
this year has been selective, and the project's success
+would not have been possible without the support of my mentor, Chamikara 
Jayalath. It's been a pleasure working closely
+with him and the broader Beam community to contribute to this open-source 
project that has a meaningful impact on the
+data engineering community.
+
+My advice for future Google Summer of Code participants is to first and 
foremost research and choose a project that aligns closely
+with your interest. Most importantly, spend a lot of time making yourself 
visible and writing a good proposal when the program
+is opened for applications. Being visible (e.g. by sharing your proposal, or 
generally any ideas and questions on the project's
+communication channel early on) makes it more likely for you to be selected; 
and a good proposal not only will make you even
+more likely to be in the program, but also give you a lot of confidence when 
contributing to and completing the project.
+
+## References
+- [Google Summer of Code Project 
Listing](https://summerofcode.withgoogle.com/programs/2025/projects/f4kiDdus)
+- [Google Summer of Code Final 
Report](https://docs.google.com/document/d/1MSAVF6X9ggtVZbqz8YJGmMgkolR_dve0Lr930cByyac/edit?usp=sharing)

Reply via email to