Apache Ignite Load CSV data from Java think client

125 Views Asked by At

When loading the csv file using sqlline it works. When trying to use the copy from command using a java thin client connection, Facing the below issue.

Here is the code:

try (IgniteClient client = Ignition.startClient(cfg)) {
String insert_customer_sql="COPY FROM '/opt/ignite/customer.csv' INTO customer(c_custkey, c_mktsegment, c_nationkey, c_name, c_address, c_phone, c_acctbal, c_comment) FORMAT CSV";

System.out.println("Inserting Data into Customer Table");
cient.query(new SqlFieldsQuery(String.format(insert_customer_sql))).getAll();

Here is the exception log:

Exception in thread "main" org.apache.ignite.client.ClientException: Ignite failed to process request [4]: 50000: Failed to serialize object [typeName=org.apache.ignite.internal.processors.bulkload.BulkLoadProcessor] (server status code [1])
    at org.apache.ignite.internal.client.thin.TcpClientChannel.convertException(TcpClientChannel.java:359)
    at org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:319)
    at org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:237)
    at org.apache.ignite.internal.client.thin.ReliableChannel.lambda$service$1(ReliableChannel.java:168)
    at org.apache.ignite.internal.client.thin.ReliableChannel.applyOnDefaultChannel(ReliableChannel.java:800)
    at org.apache.ignite.internal.client.thin.ReliableChannel.applyOnDefaultChannel(ReliableChannel.java:766)
    at org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:168)
    at org.apache.ignite.internal.client.thin.GenericQueryPager.next(GenericQueryPager.java:93)
    at org.apache.ignite.internal.client.thin.ClientQueryCursor$1.nextPage(ClientQueryCursor.java:93)
    at org.apache.ignite.internal.client.thin.ClientQueryCursor$1.hasNext(ClientQueryCursor.java:76)
    at org.apache.ignite.internal.client.thin.ClientQueryCursor.getAll(ClientQueryCursor.java:47)
    at org.spaceandtime.io.CDCLoadTest.main(CDCLoadTest.java:52)
Caused by: org.apache.ignite.internal.client.thin.ClientServerError: Ignite failed to process request [4]: 50000: Failed to serialize object [typeName=org.apache.ignite.internal.processors.bulkload.BulkLoadProcessor] (server status code [1])
    at org.apache.ignite.internal.client.thin.TcpClientChannel.processNextMessage(TcpClientChannel.java:449)
    at org.apache.ignite.internal.client.thin.TcpClientChannel.onMessage(TcpClientChannel.java:194)
    at org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientConnection.onMessage(GridNioClientConnection.java:86)
    at org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientListener.onMessage(GridNioClientListener.java:56)
    at org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientListener.onMessage(GridNioClientListener.java:30)
    at org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279)
    at org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
    at org.apache.ignite.internal.util.nio.GridNioCodecFilter.onMessageReceived(GridNioCodecFilter.java:116)
    at org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
    at org.apache.ignite.internal.util.nio.GridNioServer$HeadFilter.onMessageReceived(GridNioServer.java:3734)
    at org.apache.ignite.internal.util.nio.GridNioFilterChain.onMessageReceived(GridNioFilterChain.java:175)
    at org.apache.ignite.internal.util.nio.GridNioServer$ByteBufferNioClientWorker.processRead(GridNioServer.java:1211)
    at org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.processSelectedKeysOptimized(GridNioServer.java:2508)
    at org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:2273)
    at org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1910)
    at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
    at java.base/java.lang.Thread.run(Thread.java:834)

Process finished with exit code 1

Able to load successfully using sqlline.

1

There are 1 best solutions below

0
On BEST ANSWER

According to the documentation, COPY command is only supported by the JDBC driver. Due to that, you can't execute it using the Java thin client.