Search in sources :

Example 6 with Column

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();
}
Also used : SimpleJdbcMapper(org.apache.storm.jdbc.mapper.SimpleJdbcMapper) JdbcInsertBolt(org.apache.storm.jdbc.bolt.JdbcInsertBolt) Column(org.apache.storm.jdbc.common.Column) TopologyBuilder(org.apache.storm.topology.TopologyBuilder) SimpleJdbcMapper(org.apache.storm.jdbc.mapper.SimpleJdbcMapper) JdbcMapper(org.apache.storm.jdbc.mapper.JdbcMapper) JdbcLookupBolt(org.apache.storm.jdbc.bolt.JdbcLookupBolt)

Example 7 with Column

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;
}
Also used : Column(org.apache.storm.jdbc.common.Column) FailedException(org.apache.storm.topology.FailedException) Values(org.apache.storm.tuple.Values) ArrayList(java.util.ArrayList) List(java.util.List) FailedException(org.apache.storm.topology.FailedException) TridentTuple(org.apache.storm.trident.tuple.TridentTuple)

Example 8 with Column

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
    }
}
Also used : SimpleJdbcMapper(org.apache.storm.jdbc.mapper.SimpleJdbcMapper) Column(org.apache.storm.jdbc.common.Column) SimpleJdbcMapper(org.apache.storm.jdbc.mapper.SimpleJdbcMapper) JdbcMapper(org.apache.storm.jdbc.mapper.JdbcMapper) HikariCPConnectionProvider(org.apache.storm.jdbc.common.HikariCPConnectionProvider) ConnectionProvider(org.apache.storm.jdbc.common.ConnectionProvider) HikariCPConnectionProvider(org.apache.storm.jdbc.common.HikariCPConnectionProvider) Test(org.junit.Test)

Example 9 with Column

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);
}
Also used : SimpleJdbcLookupMapper(org.apache.storm.jdbc.mapper.SimpleJdbcLookupMapper) Fields(org.apache.storm.tuple.Fields) Column(org.apache.storm.jdbc.common.Column) JdbcLookupMapper(org.apache.storm.jdbc.mapper.JdbcLookupMapper) SimpleJdbcLookupMapper(org.apache.storm.jdbc.mapper.SimpleJdbcLookupMapper) HikariCPConnectionProvider(org.apache.storm.jdbc.common.HikariCPConnectionProvider) ConnectionProvider(org.apache.storm.jdbc.common.ConnectionProvider) HikariCPConnectionProvider(org.apache.storm.jdbc.common.HikariCPConnectionProvider) Test(org.junit.Test)

Aggregations

Column (org.apache.storm.jdbc.common.Column)9 ArrayList (java.util.ArrayList)3 ConnectionProvider (org.apache.storm.jdbc.common.ConnectionProvider)3 HikariCPConnectionProvider (org.apache.storm.jdbc.common.HikariCPConnectionProvider)3 SimpleJdbcLookupMapper (org.apache.storm.jdbc.mapper.SimpleJdbcLookupMapper)3 SimpleJdbcMapper (org.apache.storm.jdbc.mapper.SimpleJdbcMapper)3 Fields (org.apache.storm.tuple.Fields)3 Values (org.apache.storm.tuple.Values)3 List (java.util.List)2 JdbcMapper (org.apache.storm.jdbc.mapper.JdbcMapper)2 UserSpout (org.apache.storm.jdbc.spout.UserSpout)2 Test (org.junit.Test)2 Date (java.sql.Date)1 Time (java.sql.Time)1 Timestamp (java.sql.Timestamp)1 Map (java.util.Map)1 Config (org.apache.storm.Config)1 LocalCluster (org.apache.storm.LocalCluster)1 LocalTopology (org.apache.storm.LocalCluster.LocalTopology)1 JdbcInsertBolt (org.apache.storm.jdbc.bolt.JdbcInsertBolt)1