@Override
  public void writeCheckpoint(TaskName taskName, Checkpoint checkpoint) {
    Preconditions.checkArgument(checkpoint instanceof CheckpointV1,
        "Only CheckpointV1 could be written to Azure");

    if (!taskNames.contains(taskName)) {
      throw new SamzaException("writing checkpoint of unregistered task");
    }

    TableBatchOperation batchOperation = new TableBatchOperation();

    Iterator<Map.Entry<SystemStreamPartition, String>> iterator =
        checkpoint.getOffsets().entrySet().iterator();
    while (iterator.hasNext()) {
      Map.Entry<SystemStreamPartition, String> entry = iterator.next();
      SystemStreamPartition ssp = entry.getKey();
      String offset = entry.getValue();

      String partitionKey = taskName.toString();
      checkValidKey(partitionKey, "Taskname");
      String rowKey = serializeSystemStreamPartition(ssp);
      checkValidKey(rowKey, "SystemStreamPartition");

      // Create table entity
      TaskCheckpointEntity taskCheckpoint = new TaskCheckpointEntity(partitionKey, rowKey, offset);

      // Add to batch operation
      batchOperation.insertOrReplace(taskCheckpoint);

      // Execute when batch reaches capacity or this is the last item
      if (batchOperation.size() >= MAX_WRITE_BATCH_SIZE || !iterator.hasNext()) {
        try {
          cloudTable.execute(batchOperation);
        } catch (StorageException e) {
          LOG.error("Executing batch failed for task: {}", taskName);
          throw new AzureException(e);
        }
        batchOperation.clear();
      }
    }
  }
Azure checkpoint manager is used to store checkpoints in a Azure Table.
All the task checkpoints are added to the a single table named "SamzaTaskCheckpoints".
The table entities take the following form:

+-----------------+---------------------+-------------------+
|                 |     Serialized      |                   |
|   TaskName      |     JSON SSP        |     Offset        |
|                 |                     |                   |
+-----------------+---------------------+-------------------+

 Each entity have a partitionKey set as the TaskName and the rowKey set as the SSP.
samza-azure/src/main/java/org/apache/samza/checkpoint/azure/AzureCheckpointManager.java