无法通过命令行使用镶木地板工具

时间:2015-04-19 00:57:50

标签: parquet

我正在尝试运行最新版本的镶木地板工具,但我遇到了一些问题。出于某种原因,org.apache.hadoop.conf.Configuration不在阴影罐中。 (我对v1.6.0也有同样的问题)。

我应该做的事情超出mvn packagemvn 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 个答案:

答案 0 :(得分:13)

在使用自制软件的MacOS上,这是最简单的入门方式:

$ brew install parquet-tools

答案 1 :(得分:4)

您还可以将hadoop依赖项包含在目标jar中:

mvn clean package -Plocal -DskipTests -Dhadoop.scope=compile

答案 2 :(得分:2)

如果安装了hadoop,请将命令更改为hadoop jar parquet-tools-1.7.0-incubating-SNAPSHOT.jar meta --debug part-r-00000.gz.parquet

答案 3 :(得分:1)

the parquet-mr issues list的这组步骤为我解决了同样的问题:

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

答案 4 :(得分:0)

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

mvn clean package -Plocal

我最初错过了这一段,但它解释说如果你想混合Hadoop依赖,那么"本地"配置文件这样做,而不是默认情况下你希望在某个地方使用Hadoop已经安装并出现在你的类路径中:

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