/**
* Created by zhenhong.gzh on 16/7/13.
**/
import java.io.IOException;
import java.util.Date;
import java.util.concurrent.Callable;
import com.aliyun.odps.Column;
import com.aliyun.odps.TableSchema;
import com.aliyun.odps.data.Record;
import com.aliyun.odps.data.RecordWriter;
import com.aliyun.odps.tunnel.TableTunnel.UploadSession;
import com.aliyun.odps.tunnel.TunnelException;
class BufferedWriterThread implements Callable<Boolean> {
private UploadSession session;
public BufferedWriterThread(UploadSession session) {
this.session = session;
}
public Boolean call() {
TableSchema tableSchema = session.getSchema();
Record record = session.newRecord();
for (int i = 0; i < tableSchema.getColumns().size(); i++) {
Column column = tableSchema.getColumn(i);
switch (column.getType()) {
case BIGINT:
record.setBigint(i, 1L);
break;
case BOOLEAN:
record.setBoolean(i, true);
break;
case DATETIME:
record.setDatetime(i, new Date());
break;
case DOUBLE:
record.setDouble(i, 0.0);
break;
case STRING:
record.setString(i, "sample");
break;
default:
throw new RuntimeException("Unknown column type: "
+ column.getType());
}
}
try {
// open buffered writer
RecordWriter writer = session.openBufferedWriter();
// write 10 records
for (int i = 0; i < 10; i++) {
writer.write(record);
}
writer.close();
return true;
} catch (TunnelException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
}