use of org.apache.storm.jdbc.common.Column in project storm by apache.
the class UserPersistanceTopology method getTopology.
@Override
public StormTopology getTopology() {
JdbcLookupBolt departmentLookupBolt = new JdbcLookupBolt(connectionProvider, SELECT_QUERY, this.jdbcLookupMapper);
//must specify column schema when providing custom query.
List<Column> schemaColumns = Lists.newArrayList(new Column("create_date", Types.DATE), new Column("dept_name", Types.VARCHAR), new Column("user_id", Types.INTEGER), new Column("user_name", Types.VARCHAR));
JdbcMapper mapper = new SimpleJdbcMapper(schemaColumns);
JdbcInsertBolt userPersistanceBolt = new JdbcInsertBolt(connectionProvider, mapper).withInsertQuery("insert into user (create_date, dept_name, user_id, user_name) values (?,?,?,?)");
// userSpout ==> jdbcBolt
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout(USER_SPOUT, this.userSpout, 1);
builder.setBolt(LOOKUP_BOLT, departmentLookupBolt, 1).shuffleGrouping(USER_SPOUT);
builder.setBolt(PERSISTANCE_BOLT, userPersistanceBolt, 1).shuffleGrouping(LOOKUP_BOLT);
return builder.createTopology();
}
use of org.apache.storm.jdbc.common.Column in project storm by apache.
the class JdbcState method batchRetrieve.
public List<List<Values>> batchRetrieve(List<TridentTuple> tridentTuples) {
List<List<Values>> batchRetrieveResult = Lists.newArrayList();
try {
for (TridentTuple tuple : tridentTuples) {
List<Column> columns = options.jdbcLookupMapper.getColumns(tuple);
List<List<Column>> rows = jdbcClient.select(options.selectQuery, columns);
for (List<Column> row : rows) {
List<Values> values = options.jdbcLookupMapper.toTuple(tuple, row);
batchRetrieveResult.add(values);
}
}
} catch (Exception e) {
LOG.warn("Batch get operation failed. Triggering replay.", e);
throw new FailedException(e);
}
return batchRetrieveResult;
}
use of org.apache.storm.jdbc.common.Column in project storm by apache.
the class JdbcInsertBoltTest method testValidation.
@Test
public void testValidation() {
ConnectionProvider provider = new HikariCPConnectionProvider(new HashMap<String, Object>());
JdbcMapper mapper = new SimpleJdbcMapper(Lists.newArrayList(new Column("test", 0)));
expectIllegaArgs(null, mapper);
expectIllegaArgs(provider, null);
try {
JdbcInsertBolt bolt = new JdbcInsertBolt(provider, mapper);
bolt.withInsertQuery("test");
bolt.withTableName("test");
Assert.fail("Should have thrown IllegalArgumentException.");
} catch (IllegalArgumentException ne) {
//expected
}
try {
JdbcInsertBolt bolt = new JdbcInsertBolt(provider, mapper);
bolt.withTableName("test");
bolt.withInsertQuery("test");
Assert.fail("Should have thrown IllegalArgumentException.");
} catch (IllegalArgumentException ne) {
//expected
}
}
use of org.apache.storm.jdbc.common.Column in project storm by apache.
the class JdbcLookupBoltTest method testValidation.
@Test
public void testValidation() {
ConnectionProvider provider = new HikariCPConnectionProvider(new HashMap<String, Object>());
JdbcLookupMapper mapper = new SimpleJdbcLookupMapper(new Fields("test"), Lists.newArrayList(new Column("test", 0)));
String selectQuery = "select * from dual";
expectIllegaArgs(null, selectQuery, mapper);
expectIllegaArgs(provider, null, mapper);
expectIllegaArgs(provider, selectQuery, null);
}
Aggregations