猿问

在 GoLang 或 Javascript 中读取 Arrow Feather 文件

我正在寻找一种方法来通过GoLang或Javascript或其他一些不需要用户进行其他额外安装的语言来读取羽毛文件。


我的目标是提供一个用户界面来读取羽毛csv文件并将其转换回人类可读的csv。但是,我找不到太多关于如何解决它的资源。


目前我有一个下面生成的测试羽毛文件。


import pandas as pd

import datetime

import numpy as np

import pyarrow.feather as feather


# Create a dummy dataframe

todays_date = datetime.datetime.now().date()

index = pd.date_range(todays_date-datetime.timedelta(10), periods=10, freq='D')


columns = ['A','B', 'C']

df = pd.DataFrame(index=index, columns=columns)

df = df.fillna(0) # with 0s rather than NaNs


feather.write_feather(df, 'test_feather.csv')

提前致谢。


子衿沉夜
浏览 145回答 2
2回答

慕慕森

Javascript包附带了一个脚本,正是这样做的。您可以在此处找到脚本的源代码:https://github.com/apache/arrow/blob/master/js/bin/arrow2csv.jsapache-arrow如果它没有完全按照您的要求执行操作,则该脚本应作为如何使用 API 读取羽化文件的示例。

慕婉清6462132

事实证明,我发现我可以简单地使用该函数将.feather文件转换为csv。对于那些遇到相同问题的人,您可能会找到下面的代码以供参考。arrow.Table.from([arrow])const apArrow = require('apache-arrow');const fs = require('fs');const outputDir = 'output/feather';const writeIntoFile = (data) => {&nbsp; fs.appendFileSync(`${outputDir}/test_feather.csv`, data, function (err) {&nbsp; &nbsp; if (err) return console.log(err);&nbsp; });};const readDataFromRow = (fields, row) => {&nbsp; return fields&nbsp; &nbsp; .map((f) => row.get(f))&nbsp; &nbsp; .join(',');};const arrowReader = (filePath) => {&nbsp; console.log('filePath', filePath);&nbsp; const arrow = fs.readFileSync(filePath);&nbsp; const table = apArrow.Table.from([arrow]);&nbsp; const columns = table.schema.fields.map((f) => f.name);&nbsp; let buf = columns.join(',') + '\n';&nbsp; for (let i = 0; i < table.count(); i++) {&nbsp; &nbsp; const rowData = readDataFromRow(columns, table.get(i));&nbsp; &nbsp; buf += `${rowData}\n`;&nbsp; &nbsp; // export to csv every 10000 rows&nbsp; &nbsp; if (i % 10000 === 0) {&nbsp; &nbsp; &nbsp; writeIntoFile(buf);&nbsp; &nbsp; &nbsp; buf = '';&nbsp; &nbsp; &nbsp; if (i > 0) {&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; }&nbsp; writeIntoFile(buf);};
随时随地看视频慕课网APP

相关分类

Go
我要回答