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
- Protected
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(classOf[java.lang.CloneNotSupportedException]) @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: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- 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(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()