0

私はJavaが初めてなので、これは素朴な質問かもしれません。プログラムでHadoopファイルシステムに移動したい外部jarファイルが1つあります。そのためのAPIがありますが、jarファイルのパスを指定する必要があります。ハードコーディングされたパス (絶対パスと相対パスの両方) を使用したくない場合は、プロジェクトに含めるか、別のマシンで同じコードが機能するようにすることができれば、同じ jar ファイルが存在しない可能性があります。ハードコーディングされたパスを指定する場合は、ファイルを同じ場所に明示的にコピーする必要があります。


ディスクで利用可能なHive用のUDF(jarファイル)を作成しました。HiveでUDFにアクセスするには、jarをHIVEクラスパスに追加する必要があるため、JARファイルをローカルシステムからHDFSにコピーしてから、jarを追加することを考えましたHDFS パスからの HIVE クラスパス。

4

2 に答える 2

1

2 つの jar ファイルを同じディレクトリに置くことができ、パスは次のようになります。

    String path = System.getProperty("user.dir") + File.separator + "name.jar";

System.getProperty ("user.dir") は (最初の jar ファイルが実行された場所から) ユーザーの現在の作業ディレクトリを返し、File.separatorはシステムに依存するデフォルトの名前区切り文字です。

于 2012-05-04T09:51:34.913 に答える
0

Hive で UDF を使用するには、jar を含む UDF を分散キャッシュに追加して、Hive クラスター内のすべてのノードで使用できるようにする必要があります。これは、次のような構文で行うことができます。

add jar /path_to_jar/my_jar.jar

「/path_to_jar/」は、このコマンドを実行しているローカル マシン上の jar へのパスです。jar は、必要に応じて、分散キャッシュに追加された後、その名前だけで MapReduce または Hive コードからアクセスできます。

于 2012-05-09T00:29:33.683 に答える