javaignitethin-clientsqlline

Apache Ignite Load CSV data from Java think client


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.


Solution

  • 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.