Fastest Teradata Migration: TPT

When dealing with massive datasets in Teradata, standard JDBC connections often become the bottleneck. To move 2 Billion+ records efficiently, you need to bypass the SQL layer entirely and use Teradata Parallel Transporter (TPT). Why TPT? Standard SQL extractors pull data row-by-row through the SQL Parser and GDO (Global Distributed Object) layer — this is the primary bottleneck in any ODBC/JDBC connection. TPT uses the Export Operator, which bypasses this layer entirely and pulls data in blocks directly from the AMPs (Access Module Processors), enabling true massive parallelism. ...

March 19, 2026 · Arjun Sajeevan

PySpark DataFrames vs. Spark SQL: Which One Should You Use?

When building data pipelines in Apache Spark, one of the most common questions is: “Should I write this in Spark SQL or use the DataFrame API?” The short answer regarding performance is neither. Both are powered by the Catalyst Optimizer, meaning Spark converts both into the same optimized physical plan under the hood. However, from a Data Engineering perspective, the choice significantly impacts how you build, test, scale, and maintain your code. ...

February 26, 2026 · Arjun Sajeevan

Modernizing Architecture: Migrating from Hadoop to Data Lakehouse

For over a decade, Apache Hadoop was the backbone of Big Data, allowing companies to store massive datasets on commodity hardware. However, as data volume and variety exploded, the limitations of Hadoop became a major bottleneck for modern data teams. The Problem: Why Hadoop is Fading While Hadoop revolutionized distributed storage, it introduced several technical and operational challenges: The Small File Problem: Hadoop’s NameNode often struggles with millions of small files, leading to performance degradation and memory issues. Storage-Compute Coupling: In a traditional Hadoop cluster, if you need more processing power, you are forced to buy more storage disks as well. This leads to inefficient resource utilization and high costs. Operational Complexity: Managing a cluster—from NameNode health to YARN resource allocation—requires significant manual effort and specialized expertise. Lack of ACID Compliance: Ensuring data integrity during partial failures is difficult, often resulting in “dirty data” that requires manual cleanup. What is a Data Lakehouse? A Data Lakehouse is a hybrid architecture that combines the low-cost, flexible storage of a Data Lake with the performance, structure, and reliability of a Data Warehouse. ...

February 25, 2026 · Arjun Sajeevan

Real-Time Streaming Analytics: Kafka & PySpark

Level: Intermediate to Advanced Data Engineering Tech Stack: Python · Apache Kafka · Docker · PySpark Structured Streaming · JVM The Problem: Batch is Too Slow In modern e-commerce, waiting 24 hours to analyze sales data is no longer acceptable. Businesses need to know what is selling right now — to manage inventory, detect fraud, and trigger real-time marketing. To solve this, I designed and built a decoupled, event-driven streaming architecture locally. This project serves as a blueprint for how enterprise companies move from static batch processing to real-time data-in-motion. ...

February 22, 2026 · Arjun Sajeevan

SQL Server Performance: Accelerating Inserts with TABLOCK

Bulk inserting millions of rows into staging tables sounds simple—until row-level locking and full transaction logging turn it into a major pipeline bottleneck. What is TABLOCK? TABLOCK is a table-level lock hint. While row-level locking is great for concurrency, it is expensive for massive ETL jobs. By using TABLOCK, you tell SQL Server to take a single lock on the entire table. Why does it make Inserts faster? Minimal Logging: When used with a SELECT INTO or an INSERT INTO ... SELECT on a heap (a table without a clustered index), TABLOCK allows for “Minimal Logging,” which significantly reduces I/O. Reduced Lock Overhead: The engine doesn’t have to manage millions of individual row locks. Parallelism: In some configurations, it allows multiple threads to write to the table simultaneously.Since it locks the whole table, other users won’t be able to write to it until your job is done The Command: INSERT INTO TargetTable WITH (TABLOCK) SELECT * FROM SourceTable;

February 21, 2026 · Arjun Sajeevan