@Evolving
public interface DataWriterFactory
extends java.io.Serializable
DataWriter
returned by
BatchWrite.createBatchWriterFactory(PhysicalWriteInfo)
, which is responsible for
creating and initializing the actual data writer at executor side.
Note that, the writer factory will be serialized and sent to executors, then the data writer
will be created on executors and do the actual writing. So this interface must be
serializable and DataWriter
doesn't need to be.
Modifier and Type | Method and Description |
---|---|
DataWriter<org.apache.spark.sql.catalyst.InternalRow> |
createWriter(int partitionId,
long taskId)
Returns a data writer to do the actual writing work.
|
DataWriter<org.apache.spark.sql.catalyst.InternalRow> createWriter(int partitionId, long taskId)
If this method fails (by throwing an exception), the corresponding Spark write task would fail and get retried until hitting the maximum retry times.
partitionId
- A unique id of the RDD partition that the returned writer will process.
Usually Spark processes many RDD partitions at the same time,
implementations should use the partition id to distinguish writers for
different partitions.taskId
- The task id returned by TaskContext.taskAttemptId()
. Spark may run
multiple tasks for the same partition (due to speculation or task failures,
for example).