This is an automated email from the ASF dual-hosted git repository. kevingurney pushed a commit to branch matlab in repository https://gitbox.apache.org/repos/asf/arrow-experiments.git
commit a18052f513718150d5e1a7d3197beb80b141cb09 Author: Kevin Gurney <[email protected]> AuthorDate: Wed Jan 22 11:47:09 2025 -0500 Add simple MATLAB HTTP GET client example. --- http/get_simple/matlab/README.md | 40 ++++++++++++++++++++++++++++ http/get_simple/matlab/client.m | 56 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) diff --git a/http/get_simple/matlab/README.md b/http/get_simple/matlab/README.md new file mode 100644 index 0000000..7735312 --- /dev/null +++ b/http/get_simple/matlab/README.md @@ -0,0 +1,40 @@ +<!--- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> + +# HTTP GET Arrow Data: Simple MATLAB Client Example + +This directory contains a minimal example of an HTTP client implemented in MATLAB. The client: + +1. Sends an HTTP GET request to a server. +2. Receives an HTTP 200 response from the server, with the response body containing an Arrow IPC stream of record batches. +3. Creates an Arrow table from the record batches + +To run this example, first start one of the server examples in the parent directory, then: + +1. Start MATLAB + +```shell +$ matlab +``` + +2. Run the MATLAB script `client.m`: + +```matlab +>> client +``` diff --git a/http/get_simple/matlab/client.m b/http/get_simple/matlab/client.m new file mode 100644 index 0000000..046ea0e --- /dev/null +++ b/http/get_simple/matlab/client.m @@ -0,0 +1,56 @@ +% Licensed to the Apache Software Foundation (ASF) under one +% or more contributor license agreements. See the NOTICE file +% distributed with this work for additional information +% regarding copyright ownership. The ASF licenses this file +% to you under the Apache License, Version 2.0 (the +% "License"); you may not use this file except in compliance +% with the License. You may obtain a copy of the License at +% +% http://www.apache.org/licenses/LICENSE-2.0 +% +% Unless required by applicable law or agreed to in writing, +% software distributed under the License is distributed on an +% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +% KIND, either express or implied. See the License for the +% specific language governing permissions and limitations +% under the License. + +% The address of the local HTTP server +% which returns Arrow IPC Stream responses. +server = "http://localhost:8008"; + +% Diagnostic output. +disp("Reading Arrow IPC Stream from " + server + "..."); + +% Start timing. +tic; + +% Make an HTTP GET request to the local server +% to fetch an Arrow IPC Stream and read all the +% data into memory as a byte (uint8) array. +options = weboptions(ContentType="binary"); +bytes = webread(server, options); + +% Construct an Arrow RecordBatchStreamReader from the in-memory bytes. +reader = arrow.io.ipc.RecordBatchStreamReader.fromBytes(bytes); + +% Read an Arrow table from the in-memory bytes. +arrowTable = reader.readTable(); + +% Stop timing. +time = toc; +% Round elapsed time to two decimal places. +time = round(time, 2); + +% Number of bytes received. +nbytes = length(bytes); + +% Diagnostic output. +disp("DONE ✔"); +disp("---------------"); +disp("Results") +disp("---------------"); +disp("Time (s): " + string(time)); +disp("Num Bytes: " + string(nbytes)); +disp("Num Rows:" + string(arrowTable.NumRows)); +disp("Num Columns:" + string(arrowTable.NumColumns)); \ No newline at end of file
