1

ソースを使用してハイブをインストールし、ant パッケージを実行しました。

cwiki.apache.orgドキュメントに従って、 PATHvar も追加しました。つまり$HIVE_HOME$PATHベース ディレクトリ (bin/hive または hive) からコマンドを実行します。

次のエラーが発生します。問題を解決するためにパッチ ( HIVE-3606.1.patch ) を追加しましたが、それでも機能しません。

パッチを追加するコマンド:

hive-0.10.0-bin]$ patch -p0 < ~/Downloads/HIVE-3606.1.patch

ハイブを実行するには:

hive-0.10.0-bin]$ bin/hive

Exception in thread "main" java.lang.NoSuchFieldError: ALLOW_UNQUOTED_CONTROL_CHARS
    at org.apache.hadoop.hive.ql.udf.generic.GenericUDTFJSONTuple.<clinit>(GenericUDTFJSONTuple.java:59)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:113)
    at org.apache.hadoop.hive.ql.exec.FunctionRegistry.registerGenericUDTF(FunctionRegistry.java:545)
    at org.apache.hadoop.hive.ql.exec.FunctionRegistry.registerGenericUDTF(FunctionRegistry.java:539)
    at org.apache.hadoop.hive.ql.exec.FunctionRegistry.<clinit>(FunctionRegistry.java:472)
    at org.apache.hadoop.hive.ql.session.SessionState.<init>(SessionState.java:202)
    at org.apache.hadoop.hive.cli.CliSessionState.<init>(CliSessionState.java:86)
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:635)
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:613)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:156)

誰でもここで助けることができますか?

4

2 に答える 2

1

古いバージョンの Hadoop を使用しているためです。

Hadoop を使用している場合は、古いバージョンの Hadoop 用に次のコマンドを使用してソース コードを自分でコンパイルすることをお勧めします。

$ svn co http://svn.apache.org/repos/asf/hive/trunk hive
$ cd hive
$ mvn clean install -Phadoop-2,dist

詳細については、このリンクを確認してください: https://cwiki.apache.org/confluence/display/Hive/GettingStarted

次に、$HADOOP_HOME/lib の jackson* ファイル名を変更し、それらに .old 接尾辞を追加します (将来必要になる可能性があるため、削除しないことをお勧めします)。

$ mv jackson-core-asl-1.0.1.jar  jackson-core-asl-1.0.1.jar.old
$ mv jackson-mapper-asl-1.0.1.jar jackson-mapper-asl-1.0.1.jar.old

ジャクソンがコンパイルした新しいファイルは、Hive のパッケージ フォルダーのどこかにあります。私のファイルは次の場所にあります。

packaging/target/apache-hive-0.14.0-SNAPSHOT-bin/apache-hive-0.14.0-SNAPSHOT/bin/hcatalog/share/webhcat/svr/lib

見つからなくても大丈夫。ハイブ ディレクトリで次のコマンドを使用します。

$ find ./ -iname "*jackson*"

見つかるすべての jackson* ファイルが表示されます。次に、それらを含む特定のフォルダーに移動し、それらすべてを $HADOOP_HOME/lib にコピーします (現在は「jackson-core-*」が必要なだけかもしれませんが、将来の使用のためにすべてをコピーします)。

$ cp jackson* $HADOOP_HOME/lib

さらに質問があるかどうか尋ねます。

于 2014-03-31T07:18:28.687 に答える