2017-07-14 3 views
2

私はハイブとpython udfを使用しています。私はPythonのudfを追加したSQLファイルを定義しました。これまでのところ、私のpython関数を使ってクエリ結果を処理することができます。 しかし、この時点では、私は私のpython udfで外部の.txtファイルを使用する必要があります。私は私のクラスタ(.SQLとの.pyファイルと同じディレクトリ)にそのファイルをアップロードし、私も自分の.sqlファイルでこのコマンドを使用していることを追加しました:Python UDFで外部ファイルにアクセス

ADD FILE /home/ra/stopWords.txt; 

私のように私のpythonのUDFでこのファイルを呼び出すとこの:

file = open("/home/ra/stopWords.txt", "r") 

いくつかのエラーが発生しました。入れ子になったファイルを追加し、ハイブで使用する方法を理解できません。

答えて

2

追加されたファイルはすべて、UDFスクリプトの現在の作業ディレクトリ(./)にあります。

あなたがADD FILE /dir1/dir2/dir3/myfile.txtを使用して単一のファイルを追加した場合、そのパスは、あなたがADD FILE /dir1/dir2を使用してディレクトリを追加した場合、ファイルのパスは、あなたのための

./dir2/dir3/myfile.txt 
+0

おかげだろう

./myfile.txt 

になります応答!私はこの変更を加えましたが、hdfsクラスタで自分のファイルを見ることができますが、私はまだそのエラーを受け取ります。 : –

+1

@Reihan_amnどのようなエラーが表示されていますか?スクリプトのエラーではありませんか?現在のディレクトリ(./)にあるすべてのファイルを印刷してファイルが存在するかどうかを確認するUDFを作成できます。 –

+0

はい私の.txtファイルと.pファイルをhdfsに入れて見ることができます。 -rw-r - r-- 3 reihaneh_aminiスーパーグループ624 2017-07-16 02:41 UDF_test_3.py -rw-r-- r-- 3 reihaneh_amini supergroup 133 2017-07-15 16:29 sw.txt 私のスクリプトでは、私はこの.txtファイルを開いて、次のように読もうとしています:file = open( "./ sw.txt "、" r ") 私はこれを私のスクリプトから取り出して、ただリストを読み込もうとすると動作しますが、外部ファイルに対しては機能しません。エラーは"ファイルを読み書き中のハイブランタイムエラーです。 .. " –

関連する問題