@@ -24,13 +24,13 @@ import org.apache.spark.sql._
2424import org .apache .spark .sql .types .StructType
2525
2626class KuduUpdatableRelation (
27+ override val sqlContext : SQLContext ,
2728 override val tableName : String ,
2829 override val masterAddrs : String ,
2930 override val operationType : OperationType ,
3031 override val userSchema : Option [StructType ],
3132 override val readOptions : KuduReadOptions = new KuduReadOptions ,
3233 override val writeOptions : KuduWriteOptions = new KuduWriteOptions )
33- (override val sqlContext : SQLContext )
3434 extends KuduRelation (tableName, masterAddrs, operationType, userSchema,
3535 readOptions, writeOptions)(sqlContext) with Serializable {
3636
@@ -39,9 +39,23 @@ class KuduUpdatableRelation(
3939 def merge (data : DataFrame , opTypeColumn : Column ): Unit = {
4040 val syncClient : KuduClient = KuduClientCache .getAsyncClient(masterAddrs).syncClient()
4141 val lastPropagatedTimestamp = syncClient.getLastPropagatedTimestamp
42+ val opTypeColumnName = opTypeColumn.toString()
43+ doMerge(data, opTypeColumnName, lastPropagatedTimestamp, masterAddrs, schema,
44+ tableName, readOptions, writeOptions)
45+ }
46+
47+ private def doMerge (
48+ data : DataFrame ,
49+ opTypeColumnName : String ,
50+ lastPropagatedTimestamp : Long ,
51+ masterAddrs : String ,
52+ schema : StructType ,
53+ tableName : String ,
54+ readOptions : KuduReadOptions ,
55+ writeOptions : KuduWriteOptions ): Unit = {
4256 data.toDF().foreachPartition(it => {
4357 val operator = new KuduOperator (masterAddrs)
44- val pendingErrors = operator.writePartitionRows(it, schema, opTypeColumn.toString() ,
58+ val pendingErrors = operator.writePartitionRows(it, schema, opTypeColumnName ,
4559 tableName, lastPropagatedTimestamp, writeOptions)
4660 if (pendingErrors.getRowErrors.nonEmpty) {
4761 val errors = pendingErrors.getRowErrors
0 commit comments