我正在尝试运行最新版本的镶木地板工具,但我遇到了一些问题。出于某种原因,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
答案 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