问题标签 [apache-arrow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
742 浏览

apache-arrow - 示例代码编译期间的 Apache 箭头错误

在我的电脑上安装 apache 箭头库后,我尝试在网站上运行 c++ 代码示例(https://github.com/apache/arrow/blob/master/cpp/examples/arrow/row-wise-conversion-example .cc)但始终不断收到相同的错误。我虽然是因为编译器找不到箭头目录,但是将库放在与测试相同的文件夹后,它仍然没有运行并一直给出相同的错误。

0 投票
1 回答
712 浏览

pyarrow - Pyarrow table memory compared to raw csv size

I have a 2GB CSV file that I read into a pyarrow table with the following:

When I call tbl.nbytes I get 3.4GB. I was surprised at how much larger the csv was in arrow memory than as a csv. Maybe I have a fundamental misunderstanding of what pyarrow is doing under the hood but I thought if anything it would be smaller due to its columnar nature (i also probably could have squeezed out more gains using ConvertOptions but i wanted a baseline). I definitely wasnt expecting an increase of almost 75%. Also when I convert it from arrow table to pandas df the df took up roughly the same amount of memory as the csv - which was expected.

Can anyone help explain the difference in memory for arrow tables compared to a csv / pandas df.

Thx.

UPDATE

Full code and output below.

0 投票
1 回答
406 浏览

python-3.x - 带有 Tensorflow 的 Apache Arrow:类型错误:箭头类型不匹配:预期 dtype=2,但得到 dtype=9

我正在学习Arrow结合TensorFlow,根据这个博客,我写了一个mnist的例子。

我的问题是为什么要对数据进行预处理,否则会报错:

tensorflow.python.framework.errors_impl.InternalError:类型错误:箭头类型不匹配:预期 dtype=2,但得到 dtype=9 [[node IteratorGetNext(定义在 home/maqy/tensorflowDemo/arrowDemo/mnist/arrow_mnist_local.py:35) ]] [操作:__inference_distributed_function_1455]

预处理的主要代码片段如下:

完整代码如下,关键是使用df_scaled = pd.DataFrame(df) // 出现这个错误或者df_scaled = pd.DataFrame(my_dict) // 这个可以

完整的日志如下:

0 投票
0 回答
121 浏览

typescript - 在浏览器应用程序中使用 apache-arrow - Typescript 编译器错误

尝试在浏览器应用程序中使用 apache-arrow,但 typescript 编译器在某些箭头的 .d.ts 文件中引发以下错误

node_modules/@apache-arrow/es2015-esm/column.d.ts:14:22 - 错误 TS2417:类静态侧“typeof 列”错误地扩展了基类静态侧“typeof Chunked”。“新”属性的类型不兼容。

node_modules/@apache-arrow/es2015-esm/ipc/reader.d.ts:238:5 - 错误 TS2717:后续属性声明必须具有相同的类型。属性“模式”必须是“模式”类型,但这里有“模式”类型。

238模式:模式;

node_modules/@apache-arrow/es2015-esm/recordbatch.d.ts:17:18 - 错误 TS2430:接口“RecordBatch”错误地扩展了接口“StructVector”。'slice(...).clone' 的类型在这些类型之间不兼容。

tsconfig.json 文件看起来像

0 投票
1 回答
86 浏览

c++ - 如何在 Apache Arrow 的 Parquet 文件的每一行中获取重复字段的最后一个值?

假设我正在对 Parquet 文件的每一行做一些事情,并且每一行都有一个名为的字段,该字段myList是重复的和字符串。如何获得myList每行的最后一个值?

此示例使用 avector来存储所有值。有什么方便的方法可以直接获取每行重复字段的最后一个值吗?

我的代码是这样的:

谢谢~

0 投票
1 回答
621 浏览

parquet - 如何读取箭头拼花键值元数据?

当我在 R 和 Python 中保存一个镶木地板文件(使用 pyarrow)时,我得到一个保存在元数据中的箭头模式字符串。

如何读取元数据?是 Flatbuffer 编码的数据吗?架构的定义在哪里?它未在箭头文档站点上列出。

元数据是一个键值对,看起来像这样

由于在 R 中写了这个

0 投票
1 回答
501 浏览

rust - 如何附加到现有的 apache 箭头数组

我可以创建一个箭头数组builder

但是,一旦我完成了数组的构建(因此称为.finish),是否有任何选项可以使用数据创建一个新builderfinished_array而不将数据复制到一个新的中builder

我基本上想要的是便宜的append手术。

0 投票
1 回答
213 浏览

c++ - 问:Apache Arrow 数组生成器 UnsafeAppend

我正在研究数组构建器 UnsafeAppend api。根据文档中的代码。

Builder.Resize(i) 应该为 i 值腾出空间。将 i 更改为另一个值(例如 100000000)后,我应该有 100000000 个值的空间。我的编译器出现了分段错误,这很奇怪。我做了另一个实验,将构建器的大小调整为 10。构建器应该只有 10 个空间,但是我的代码可以成功地将比 10 更多的值附加到构建器。

我有点困惑,构建器不应该具有与 api Resize(i) 完全相同的空间 i。有谁知道 UnsafeAppend API 的任何正确方法?

0 投票
0 回答
914 浏览

python - pyarrow将字符串转换为表中的dict数组而不去熊猫

我有一个日常流程,我在其中读取历史parquet数据集,然后每天将其与一个新文件连接起来。我试图通过更好地利用箭头字典数组来优化内存。我想避免系统地(并且不定义列)往返于 pandas 以获得分类。

我想知道如何在pyarrow.

我目前这样做:

我处理了许多文件,并希望避免为每个文件维护一个架构,在其中列出每列的字典列并将其用作 csv 的读取选项。在没有列规范的情况下使用 pandas 的便利性strings_to_categorical=True非常好。从我所看到的情况来看,没有办法strings_to_dictpyarrow.

有没有干净的方法可以在 pyarrow 中做到这一点?

0 投票
1 回答
268 浏览

java - 在 Eclipse 中安装 Apache Arrow Java

我目前正在尝试在 Eclipse 中安装 Apache Arrow for Java 并且遇到了一些麻烦。

我在https://search.maven.org/search?q=g:org.apache.arrow%20AND%20v:0.17.1上找到了 Java 包

因为没有找到任何安装的信息,所以只下载了所有的jar文件:

  • 箭头性能-0.17.1.jar
  • 箭头算法-0.17.1.jar
  • 箭头-avro-0.17.1.jar
  • 飞行-grpc-0.17.1.jar
  • 飞行核心0.17.1.jar
  • 箭头等离子0.17.1.jar
  • 箭头-jdbc-0.17.1.jar
  • 箭头工具-0.17.1.jar
  • 箭头矢量0.17.1.jar
  • 箭头内存0.17.1.jar
  • 箭头格式-0.17.1.jar

然后,我在 Eclipse 中创建了一个新的 Java 项目,并将所有 jar 文件复制到所述项目中的文件夹“lib”中。然后,我将它们添加到Project -> Properties -> Java Build Path -> Libraries -> Add JARs并选择了我的“lib”文件夹中的所有 jar 并应用。

之后,我尝试运行我在https://github.com/animeshtrivedi/blog/blob/master/post/2017-12-26-arrow.md上找到的以下 java 代码:

我收到以下错误消息:

当我转到 时Referenced Libraries -> arrow-vector-0.17.1.jar -> org.apache.arrow.vector.types.pojo -> Field.class,它显示“未找到源”,如下所示。我需要手动附加源吗? 在此处输入图像描述

在我下载 jar 文件的 Apache Arrow 网站上,我还可以下载“...sources.jar”文件。我还需要下载这些并将它们添加到“Java Build Path”吗?(这似乎是很多工作)。

还有一个“arrow-java-root”zip 文件夹,我可以用它来添加库吗?


我不熟悉向 Java 添加库,所以我不知道如何解决这个问题。任何帮助表示赞赏。

(我在 Windows 10、Java 8 上)


解决方案:

我将我的项目转换为 Maven 项目 ( Configure -> Convert to Maven Project) 并添加了依赖项"arrow-java-root"。( https://stackoverflow.com/a/26350902 ) 感谢 andrewjames 指出这一点。

但是,我现在在运行程序时收到以下消息:

但是程序仍然正确终止,因为如果我添加:

它在上面的消息之后打印该字段。