安装Parquet工具

13

我正在尝试在FreeBSD机器上安装parquet工具。

我克隆了这个存储库:git clone https://github.com/apache/parquet-mr

然后我执行了 cd parquet-mr/parquet-tools

然后我执行了 `mvn clean package -Plocal

如此指定的: https://github.com/apache/parquet-mr/tree/master/parquet-tools

我得到了这个:

enter image description here

为什么会出现这个依赖错误?我该如何解决它?


错误似乎相当自我解释; 你正在寻找的构件不在Jitpack的存储库中。 它在Maven Central中吗? - Makoto
啊,原来我只需要检出最新的稳定版本标签,而不是主分支。 - user3685285
3
请不要贴出代码或错误的图像!图像和截图可能是一个不错的补充,但请确保帖子即使没有它们也仍然清晰和有用。如果你贴出代码或错误信息的图像,请确保你也直接复制、粘贴或输入实际的代码/信息到帖子中。 - Rob
不要克隆,下载它并按照其他必需的步骤操作。我是这样做的,它对我有效。 我从这个链接下载的。 https://github.com/apache/parquet-mr/archive/apache-parquet-1.8.2.tar.gz 干杯! - Keith
5个回答

16
在Ubuntu 20上,我通过pip安装:
python3 -m pip install parquet-tools

我没有在FreeBSD上尝试过,但我认为它也可以工作。有关使用pip在FreeBSD上的警告,请参见相关答案

您可以使用以下命令查看文件:

parquet-tools show filename.parquet

这个答案对于CentOS Stream 8没有帮助,因为我收到了错误信息:“在 /tmp/pip-build-ze7r45bk/pyarrow/ 中,命令“python setup.py egg_info”失败,错误代码为1!” - Am_I_Helpful
1
在安装parquet-tools之前,您可能需要升级pip版本,例如python3 -m pip install --upgrade pip。如果这样仍然无法解决问题,您可以提出一个新的问题。 - Nagev
是的,升级pip版本有所帮助。谢谢(已点赞)! - Am_I_Helpful

13

我知道这个问题是关于FreeBSD的,但如果你使用的是mac系统,你可以执行以下命令:

brew install parquet-tools


10
自2022年起被标记为已过时。 - Alex Moore-Niemi

6

parquet-toolsparquet-mr的一个模块,它依赖于其他一些模块。

当您从对应于发布版本的源版本构建时,这些其他模块将可供Maven使用,因为发布的构件是发布过程的一部分。

但是,如果从快照版本构建,则必须自行提供这些依赖项。有两种方法可以实现:

选项1:构建并安装父目录的所有模块:

git clone https://github.com/apache/parquet-mr
cd parquet-mr
mvn install -Plocal

这将把快照构件放入您本地的~/.m2目录中。随后,您可以像最初尝试的那样重新构建parquet-tools,因为现在快照构件已经可从~/.m2获取。
选项2:从父目录构建parquet-mr模块,同时要求Maven沿途构建所需的模块。
git clone https://github.com/apache/parquet-mr
cd parquet-mr
mvn package -pl parquet-tools -am -Plocal

选项1将构建比选项2更多的项目,因此如果您只需要parquet-tools,则最好选择后者。但请注意,可能两者都需要安装thrift编译器。


我一直在尝试仅编译parquet-tools,但一直收到以下错误:[ERROR] thrift failed output: [WARNING:/home/user/parquet-mr/parquet-format-structures/target/parquet-format-thrift/parquet.thrift:295] The "byte" type is a compatibility alias for "i8". Use "i8" to emphasize the signedness of this type.我无法找到任何解决方案或解决方法。我已经安装了Thrift。Thrift版本1.0.0有什么想法吗? - Zombraz
很奇怪,这只是一个警告,不应该导致构建失败。尽管如此,请尝试使用 Thrift 0.9.3,因为这是 parquet-mr 需要的版本,这样就不会出现这个问题了。另请参阅:https://issues.apache.org/jira/browse/PARQUET-1425 - Zoltan
1
现在我收到了一个不同的错误消息。它说:/home/edwinalejandro/parquet-mr/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ColumnIndexFilterUtils.java:[30,34] package it.unimi.dsi.fastutil.ints does not exist。我已经打开了Java文件,并且它确实包含以下包:import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; - Zombraz
除非您要使用“hadoop…”命令运行,否则应该使用-Dhadoop.scope=compile进行构建。 - Wheezil

2
Parquet工具 - 一种可用于读取parquet文件的实用程序。您可以从Github克隆它并运行一些maven命令。
1. git clone https://github.com/Parquet/parquet-mr.git 
2. cd parquet-mr/parquet-tools/ 
3. mvn clean package -Plocal 


或者,您可以下载稳定版本并在本地构建。

  1. 下载稳定的 Parquet 版本。

    https://github.com/apache/parquet-mr/archive/apache-parquet-1.8.2.tar.gz


2. 在本地使用 Maven 安装。

 D:\parquet>cd parquet-tools && mvn clean package -Plocal

enter image description here

将其翻译为中文:


3. 测试它(将一个 Parquet 文件粘贴到目标目录下):

 D:\parquet\parquet-tools\target>java -jar parquet-tools-1.8.2.jar schema out.parquet

(其中out.parquet是位于目标目录下的我的parquet文件)

enter image description here

// 读取 parquet 文件
D:\parquet\parquet-tools\target>java -jar parquet-tools-1.6.0.jar cat out.parquet

// 读取 Parquet 文件中的几行数据
D:\parquet\parquet-tools\target>java -jar parquet-tools-1.6.0.jar head -n5 out.parquet 

1
这个答案截至2022年11月已经失效。 - nomadSK25

1
一些答案中的jar下载链接已经失效,但您可以从maven central获取。
然而,这个jar和其他类似的jar是为了提供hadoop依赖项而构建的。如果您从源代码构建,将会得到默认值。因此,在构建时需要设置-Dhadoop.scope=compile,否则结果只能在使用"hadoop ..."命令的hadoop节点上运行。
更糟糕的是,这个工具显然禁用了System.out和System.err,所以导致main()失败的异常永远不会被打印出来,您将不知道发生了什么。
我还发现,maven-license-plugin的默认设置会在出现它不期望的文件(例如nbactions.xml,如果您使用netbeans)时使构建失败。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接