class DynamoDBCommitCoordinatorClient extends CommitCoordinatorClient
A commit coordinator client that uses DynamoDB as the commit coordinator. The table schema is as follows:
tableId: String --- The unique identifier for the table. This is a UUID.
path: String --- The fully qualified path of the table in the file system. e.g. s3://bucket/path.
acceptingCommits: Boolean --- Whether the commit coordinator is accepting new commits. This will only
be set to false when the table is converted from coordinated commits to file system commits.
tableVersion: Number --- The version of the latest commit.
tableTimestamp: Number --- The inCommitTimestamp of the latest commit.
schemaVersion: Number --- The version of the schema used to store the data.
hasAcceptedCommits: Boolean --- Whether any actual commits have been accepted by this commit coordinator
after registerTable.
commits: --- The list of unbackfilled commits.
version: Number --- The version of the commit.
inCommitTimestamp: Number --- The inCommitTimestamp of the commit.
fsName: String --- The name of the unbackfilled file.
fsLength: Number --- The length of the unbackfilled file.
fsTimestamp: Number --- The modification time of the unbackfilled file.
- Alphabetic
- By Inheritance
- DynamoDBCommitCoordinatorClient
- CommitCoordinatorClient
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
- new DynamoDBCommitCoordinatorClient(coordinatedCommitsTableName: String, endpoint: String, client: AmazonDynamoDB, backfillBatchSize: Long, readCapacityUnits: Long, writeCapacityUnits: Long, skipPathCheck: Boolean)
- new DynamoDBCommitCoordinatorClient(coordinatedCommitsTableName: String, endpoint: String, client: AmazonDynamoDB, backfillBatchSize: Long)
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
backfillToVersion(logStore: LogStore, hadoopConf: Configuration, tableDesc: TableDescriptor, version: Long, lastKnownBackfilledVersion: Long): Unit
Backfills all the unbackfilled commits returned by the commit coordinator and notifies the commit owner of the backfills.
Backfills all the unbackfilled commits returned by the commit coordinator and notifies the commit owner of the backfills. The version parameter is ignored in this implementation and all the unbackfilled commits are backfilled. This method will not throw any exception if the physical backfill succeeds but the update to the commit coordinator fails.
- Definition Classes
- DynamoDBCommitCoordinatorClient → CommitCoordinatorClient
- Annotations
- @Override()
- Exceptions thrown
IllegalArgumentExceptionif the requested backfill version is greater than the latest version for the table.
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
def
commit(logStore: LogStore, hadoopConf: Configuration, tableDesc: TableDescriptor, commitVersion: Long, actions: Iterator[String], updatedActions: UpdatedActions): CommitResponse
- Definition Classes
- DynamoDBCommitCoordinatorClient → CommitCoordinatorClient
- Annotations
- @Override()
-
def
commitToCoordinator(logPath: Path, coordinatedCommitsTableConf: Map[String, String], attemptVersion: Long, commitFile: FileStatus, inCommitTimestamp: Long, isCCtoFSConversion: Boolean): CommitResponse
Commits the given file to the commit coordinator.
Commits the given file to the commit coordinator. A conditional write is performed to the DynamoDB table entry associated with this Delta table. If the conditional write goes through, the filestatus of the UUID delta file will be appended to the list of unbackfilled commits, and other updates like setting the latest table version to
attemptVersionwill be performed.For the conditional write to go through, the following conditions must be met right before the write is performed: 1. The latest table version in DynamoDB is equal to attemptVersion - 1. 2. The commit coordinator is accepting new commits. 3. The schema version of the commit coordinator matches the schema version of the client. 4. The table path stored in DynamoDB matches the path of the table. This check is skipped if
skipPathCheckis set to true. If the conditional write fails, we retrieve the current entry in DynamoDB to figure out which condition failed. (DynamoDB does not tell us which condition failed in the rejection.) If any of (2), (3), or (4) fail, an unretryableCommitFailedExceptionwill be thrown. For (1): If the retrieved latest table version is greater than or equal to attemptVersion, a retryableCommitFailedExceptionwill be thrown. If the retrieved latest table version is less than attemptVersion - 1, an unretryableCommitFailedExceptionwill be thrown.- Attributes
- protected[dynamodbcommitcoordinator]
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
getCommits(tableDesc: TableDescriptor, startVersion: Long, endVersion: Long): GetCommitsResponse
- Definition Classes
- DynamoDBCommitCoordinatorClient → CommitCoordinatorClient
- Annotations
- @Override()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
def
registerTable(logPath: Path, tableIdentifier: Optional[TableIdentifier], currentVersion: Long, currentMetadata: AbstractMetadata, currentProtocol: AbstractProtocol): Map[String, String]
- Definition Classes
- DynamoDBCommitCoordinatorClient → CommitCoordinatorClient
- Annotations
- @Override()
-
def
semanticEquals(other: CommitCoordinatorClient): Boolean
- Definition Classes
- DynamoDBCommitCoordinatorClient → CommitCoordinatorClient
- Annotations
- @Override()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()