[英]What is the best way to send Arrow data to the browser?
我在服務器(Python)上有 Apache 箭頭數據,需要在瀏覽器中使用它。 Arrow Flight 似乎沒有在 JS 中實現。 將數據發送到瀏覽器並在那里使用的最佳選擇是什么?
我什至不需要在瀏覽器中使用箭頭格式。 這個問題還沒有收到任何回復,所以我為我正在尋找的內容添加了一些額外的標准:
當然這是一個已解決的問題? 如果是,我一直無法找到解決方案。 請幫忙!
根據 David Li 對您的原始帖子的評論,您可以在服務器端使用PyArrow並在客戶端使用Apache Arrow JS 綁定來實現您想要的非流式版本,而無需太多代碼。 Arrow IPC 格式可以滿足您的要求,因為它隨數據一起發送架構,節省空間,零復制,並且是跨平台的。
這是一個玩具示例,顯示在服務器上生成記錄批次並在客戶端接收它:
服務器:
from io import BytesIO
from flask import Flask, send_file
from flask_cors import CORS
import pyarrow as pa
app = Flask(__name__)
CORS(app)
@app.get("/data")
def data():
data = [
pa.array([1, 2, 3, 4]),
pa.array(['foo', 'bar', 'baz', None]),
pa.array([True, None, False, True])
]
batch = pa.record_batch(data, names=['f0', 'f1', 'f2'])
sink = pa.BufferOutputStream()
with pa.ipc.new_stream(sink, batch.schema) as writer:
writer.write_batch(batch)
return send_file(BytesIO(sink.getvalue().to_pybytes()), "data.arrow")
客戶
const table = await tableFromIPC(fetch(URL));
// Do what you like with your data
編輯:我在https://github.com/amoeba/arrow-python-js-ipc-example添加了一個可運行的示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.