You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@arrow.apache.org by "Wes McKinney (Jira)" <ji...@apache.org> on 2020/05/06 20:50:00 UTC

[jira] [Commented] (ARROW-8719) Stream data easily- function to convert record batch to streamable format

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

Wes McKinney commented on ARROW-8719:
-------------------------------------

Just looking at the client code

{code}
	int sock;
	sock = socket(AF_INET, SOCK_STREAM, 0);

	//setup an address
  struct sockaddr_in server_address;
	server_address.sin_family = AF_INET;
	server_address.sin_port = htons(9002);
	server_address.sin_addr.s_addr = INADDR_ANY;

	connect(sock, (struct sockaddr *) &server_address, sizeof(server_address));

	//send(sock, request, sizeof(request), 0);

	GArrowResizableBuffer *data = NULL;
	recv(sock, &data, garrow_buffer_get_size(GARROW_BUFFER(data)), 0);

	gsize data_size = sizeof(data);
	display_arrow_buffer(GARROW_BUFFER(data), data_size);
{code}

These lines won't do what you want:

{code}
GArrowResizableBuffer *data = NULL;
recv(sock, &data, garrow_buffer_get_size(GARROW_BUFFER(data)), 0);
{code}

You need to allocate memory before you use {{recv}} to write data into it. Consider using {{garrow_resizable_buffer_new}} (you will need to send a buffer size or something from the server so the client knows how much memory to allocate)

> Stream data easily- function to convert record batch to streamable format
> -------------------------------------------------------------------------
>
>                 Key: ARROW-8719
>                 URL: https://issues.apache.org/jira/browse/ARROW-8719
>             Project: Apache Arrow
>          Issue Type: Wish
>          Components: C
>         Environment: Linux
>            Reporter: Steven
>            Priority: Minor
>              Labels: buffer, data-transfer, socket
>         Attachments: code.zip
>
>
> I am currently working on a project that  need to send the data in different processes. Instead of storing it in a file, I am using the IPC stream method, storing it into a buffer. When I try to send the data(bytes) through a socket, I loose the data in the client side. ( Which gives me the idea that when i leave the function(create buffer in the server side folder), I loose acces to that data. Can there be an example that explains this. 
> Also, can you implement a function that convert the record batch into the format that can be sent through the socket directly.
>  
> The code are in the attachment, one for the server side code and the other for the client side code.
> Thank you



--
This message was sent by Atlassian Jira
(v8.3.4#803005)