Design events, solve the Dual Write problem… all that and more in this week’s roundup!
The Dual Write problem has long been known to make developers quake in their boots. The transactional outbox pattern is your way out! This week we’re featuring Wade Waldron’s video on this pattern, as well as a blog post about using Confluent for K8s.
We’ve also got a LinkedIn article on Sliding Windows in Apache Kafka® and OVER aggregations functionality in Apache Flink®. This article points out a logical similarity between Kafka Streams and Flink, and it got us thinking, are there more logical similarities out there? If you know of one, send it on over to devx_newsletter@confluent.io!
This week, see David Anderson’s answer to the question: how can I understand the codebase better? There’s a list of helpful links, including a lineup of talks on Flink!
Got your own favorite Stack Overflow answer related to Flink, Kafka, or Streaming Infrastructure? Send it in to devx_newsletter@confluent.io!
Did you know that you can view the AST (Abstract Syntax Tree) of the query planner and the full detailed execution plan for your SQL statements in PyFlink? This is how:
On your table environment instance, call the function explain_sql like so:
table_env.explain_sql("SELECT * FROM table")
Following that, you will receive the following output:
== Abstract Syntax Tree ==
LogicalProject(window_start=[$0], window_end=[$1], price=[$2])
+- LogicalTableScan(table=[[default_catalog, default_database, table]])
== Optimized Physical Plan ==
TableSourceScan(table=[[default_catalog, default_database, table]], fields=[window_start, window_end, price])
== Optimized Execution Plan ==
TableSourceScan(table=[[default_catalog, default_database, table]], fields=[window_start, window_end, price])
Perhaps you don’t remember this, but last week we asked you to spot the error in the following CC Flink SQL query:
CREATE TABLE Treat (
`rice_krispy` STRING,
`canoli` STRING,
`gulab_jamun` STRING
) WITH (
'connector' = 'kafka'
...
);
The culprit here is that ‘treat’ is a reserved keyword, and it’s best avoided, eliminating confusion.
In-person:
Hybrid:
We hope you enjoyed our curated assortment of resources! If you’d like to provide feedback, suggest ideas for content you’d like to see, or you want to submit your own resource for us to share with the community, email us at devx_newsletter@confluent.io!
We will only share developer content and updates, including notifications when new content is added. We will never send you sales emails. 🙂 By subscribing, you understand we will process your personal information in accordance with our Privacy Statement.