You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flume.apache.org by "Viktor Trako (JIRA)" <ji...@apache.org> on 2014/05/28 10:31:03 UTC

[jira] [Commented] (FLUME-2256) Generic JDBC Sink

    [ https://issues.apache.org/jira/browse/FLUME-2256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14010917#comment-14010917 ] 

Viktor Trako commented on FLUME-2256:
-------------------------------------

Where is this at the moment - has anyone tested this patch further?

Currently using it in a staging environment and its working beautifully for writing events to MySql server. The dependencies required for this patch are working in harmony with my current agent requirements.

Dissapointed this didnt make its way through to 1.5 release.

Viktor

> Generic JDBC Sink
> -----------------
>
>                 Key: FLUME-2256
>                 URL: https://issues.apache.org/jira/browse/FLUME-2256
>             Project: Flume
>          Issue Type: New Feature
>            Reporter: Jeremy Karlson
>            Assignee: Jeremy Karlson
>         Attachments: FLUME-2256.diff
>
>
> I've been working on a generic JDBC sink.  It needs a bit more testing, but I think it's ready for review and feedback.  I have not yet updated the Flume documentation, but I can / will if people are happy with this.
> Since the config file is how you’d interact with it, here’s a working example from my source tree:
> {code}
> a.sinks.k.type=jdbc
> a.sinks.k.channel=c
> a.sinks.k.driver=com.mysql.jdbc.Driver
> a.sinks.k.url=jdbc:mysql://localhost:8889/flume
> a.sinks.k.user=username
> a.sinks.k.password=password
> a.sinks.k.batchSize=100
> a.sinks.k.sql=insert into twitter (body, timestamp) values (${body:string}, ${header.timestamp:long})
> {code}
> The interesting part is the SQL statement.  You can put anything you want in there - it will get converted to a prepared statement on execution.  The Ant-ish tokens get parsed and replaced with parameters at startup.
> The tokens are three part.  For example, in:
> {code}
> ${body:string(UTF-8)}
> {code}
> The first is a place in the event to get the value from (“body”, “header.foo”, or “custom”).  The second part ("string") is a type identifier that converts into an appropriate JDBC parameter.  The third part (“UTF-8") is a configuration string for that type, if needed.  As for types, so far I’ve defined:
> body: string (with optional charset encoding), bytearray
> header: string, long, int, float, double, date (with mandatory date format and optional timezone)
> Additionally, if none of those make you happy you can define you own parameter converters:
> {code}
> ${custom:com.company.foo.MyConverter(optionaltextconfig)}
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)