无法从命令行运行parquet-tools

4
我正在尝试运行最新版本的parquet-tools,但遇到了一些问题。出现了某种原因导致shaded jar中没有org.apache.hadoop.conf.Configuration。(我在v1.6.0中也遇到了同样的问题。)
除了mvn package或mvn install之外,我应该做些什么?(我实际使用的mvn调用是mvn install -DskipTests -pl \!parquet-thrift,\!parquet-cascading,\!parquet-pig-bundle,\!parquet-pig,\!parquet-scrooge,\!parquet-hive,\!parquet-protobuf)。这很好地工作了,如果我选择运行测试,测试也会通过。
我得到的错误如下(您可以看到我已经尝试将旧版本的hadoop jar粘贴到类路径中;无论有无它,结果都相同)。
> java -classpath /path/to/hadoop-core-1.1.0.jar -jar parquet-tools-1.7.0-incubating-SNAPSHOT.jar meta --debug part-r-00000.gz.parquet

java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration
    at parquet.tools.command.ShowMetaCommand.execute(ShowMetaCommand.java:59)
    at parquet.tools.Main.main(Main.java:222)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 2 more
org/apache/hadoop/conf/Configuration
5个回答

13

在MacOS系统上,使用Homebrew是最简单的入门方式:

$ brew install parquet-tools

1
这会导致以下错误:"parquet-tools已被禁用,因为上游它已经过时。"作为替代方案,可以使用parquet-cli:brew install parquet-cli。用法:parquet info <name>.parquet - Tim Nieradzik

6
你可以将hadoop依赖项包含到目标jar中: mvn clean package -Plocal -DskipTests -Dhadoop.scope=compile

2
如果您已经安装了Hadoop,则将命令更改为hadoop jar parquet-tools-1.7.0-incubating-SNAPSHOT.jar meta --debug part-r-00000.gz.parquet

1

这组来自parquet-mr问题列表的步骤解决了我遇到的同样问题:

mvn install
cd parquet-tools
mvn clean package -Plocal
mvn install
mvn dependency:copy-dependencies
# replace 1.8.2 in the next step with the version you're using
cp target/parquet-tools-1.8.2-SNAPSHOT.jar target/dependency/
mkdir -p ~/local/bin/lib
cp target/dependency/* ~/local/bin/lib/
cp src/main/scripts/* ~/local/bin/
echo export PATH=$PATH:~/local/bin >> .profile

1

我遇到了类似的问题,并通过指定“local”配置文件来修复它:

mvn clean package -Plocal

我原本错过了这一段,但是它解释了如果你想混合使用Hadoop依赖项,"local"配置文件会这样做,而默认情况下,你应该在已经安装了Hadoop并且存在于类路径上的某个地方使用它:

https://github.com/Parquet/parquet-mr/tree/master/parquet-tools


抱歉让你失望了;这对我没有起作用,但还是谢谢你的尝试! - Isaac

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