-
Notifications
You must be signed in to change notification settings - Fork 7
Batch mode not supported for exasol sink connector #5
Comments
Hello, Thanks for reporting the issue! Could you please provide more information on the error? Please be aware that the You can check out the Kafka connect configuration parameters here. Interesting parameters might be these:
|
Hi Muhammet,
Thanks for quick turnaround. I might have misunderstood the use of
batch.size parameter but what baffles me is that if I change the batch.size
to 2, the inserts/updates to exasol stop working.
However, the important thing for me right now is to do batch
inserts/updates to exasol via this connector. Below is a sample config for
one of my connectors. Currently, with batch.size property set to 1, the
inserts/updates happen 1 by 1 which makes the inserts very slow when
connector is started for first time. Can you help me with a sample sink
connector config which does the batch inserts/updates.
Sample Sink Connector Config
==========================
"config": {
"connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
"connection.password": "****",
"tasks.max": "1",
"topics": "users",
"batch.size": "1",
"transforms": "unwrap",
"auto.evolve": "true",
"connection.user": "***",
"name": "connector_users_sink",
"auto.create": "true",
"connection.url": "jdbc:exa:127.0.0.1",
"insert.mode": "upsert",
"pk.mode": "record_value",
"pk.fields": "ID"
}
Regards,
Kamran
…On Thu, 29 Aug 2019 at 14:07, Muhammet Orazov ***@***.***> wrote:
Hello,
Thanks for reporting the issue!
Could you please provide more information on the error?
Please be aware that the batch.size parameter is used for the producers.
From you comment, I assume that the Exasol is used as consumer so maybe it
is not affecting the inserts.
You can check out the Kafka connect configuration parameters here
<https://kafka.apache.org/documentation/#connectconfigs>.
Interesting parameters might be these:
- max.message.bytes
- fetch.max.bytes
- max.partition.fetch.bytes
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#5?email_source=notifications&email_token=AFLIBVGJ3MSB75ZCEDRZEHDQG6DEBA5CNFSM4IRLIUGKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5NW7QY#issuecomment-526086083>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AFLIBVBIRDOEPZQODAZSUTLQG6DEBANCNFSM4IRLIUGA>
.
|
Hello @kamrankhan1, The batching is not done from connector side but instead from Kafka itself. There are many parameters which you can try out. I agree it can be frustrating though. Please have look into this discussion, it asks similar question. Additionally, you can check out these parameters:
I hope these are helpful. Best |
Thanks Muhammet. Will give it a try and will update you.
Regards,
Kamran
…On Mon, 2 Sep 2019 at 15:26, Muhammet Orazov ***@***.***> wrote:
Hello @kamrankhan1 <https://github.com/kamrankhan1>,
The batching is not done from connector side but instead from Kafka
itself. There are many parameters which you can try out. I agree it can be
frustrating though.
Please have look into this discussion
<confluentinc/kafka-connect-jdbc#290>, it asks
similar question. Additionally, you can check out these
<https://docs.confluent.io/2.0.0/connect/connect-jdbc/docs/index.html#configuration-options>
parameters
<https://docs.confluent.io/current/installation/configuration/consumer-configs.html>
:
- batch.max.rows
- poll.interval.ms
I hope these are helpful.
Best
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#5?email_source=notifications&email_token=AFLIBVFHXJJGOX3F5S7CEB3QHTPONA5CNFSM4IRLIUGKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5VLASI#issuecomment-527085641>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AFLIBVDRBMAPH7PB4B5YSM3QHTPONANCNFSM4IRLIUGA>
.
|
Hi, We've been investigating what appears to be the same issue, so I can add some of our findings:
Based on that, I believe the "MERGE" query cannot be used in a batched prepared statement (see below for reproduction that should be enough proof of that). There doesn't seem to be an easy way to go around this:
ReproductionThe error is easy to reproduce. Assuming you have a table try {
Class.forName("com.exasol.jdbc.EXADriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try (
Connection connection = DriverManager.getConnection(
"jdbc:exa:localhost:8888;schema=SOME_SCHEMA",
"sys",
"exasol"
);
PreparedStatement statement = connection.prepareStatement(
"merge into SOME_SCHEMA.SOME_TABLE using (select ? as \"id\", ? as \"value\") as incoming on target.\"id\" = incoming.\"id\"\n" +
" when matched then update set target.\"value\" = incoming.\"value\" where target.\"id\" = incoming.\"id\"\n" +
" when not matched then insert (\"id\", \"value\") values (target.\"id\", target.\"value\");"
)
) {
statement.setObject(1, "1");
statement.addBatch();
statement.setObject(1, "2");
statement.addBatch();
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} |
Hey @smaspe, Thanks for the feedback! Sorry, for the delayed reply. I am going to reproduce your suggestions and see if we can fix/solve it. |
Hey @smaspe, I have discussed this with colleague responsible with interfaces. Unfortunately, indeed merge with batches is not supported. I am going to update the readme mentioning it. If you need this feature, you can open an idea ticket with us in IDEAs page. Thanks for the reporting it! Best |
hi @morazow , I am also facing this issue. I am unable to use 'upsert' mode for Exasol sink connector. I too get below error: [2020-12-02 17:35:55,464] WARN Write of 4 records failed, remainingRetries=9 (io.confluent.connect.jdbc.sink.JdbcSinkTask:76) The merge query generated by kafka is correct but still I get this error. Are you aware of any work around for this upsert issue? Could you please suggest me some alternative. Thanks, |
Hello @avinash0720, Yes, unfortunately, it is not possible to use Exasol MERGE statement with batches. One alternative is to use UDF based import from Kafka into Exasol. At the moment, I am not aware of the ongoing work to support this feature. Please ask in the community or open an IDEA ticket so that our Product Management can assess the request. |
This project has been discontinued. Please use exasol/kafka-connector-extension for integration with Apache Kafka. |
We have implemented connectors to sync data from MySQL to Exasol. However, we found that the kafka-connect-jdbc exasol does not support batch inserts/updates. If we increase the "batch.size" property to more than 1, we start getting errors. Keeping the batch size to 1 makes the sink connector really slow. Can you please fix this issue
The text was updated successfully, but these errors were encountered: