2017-10-06 4 views
1

1 nodenodeと2 datanodeの3ノードHadoopクラスタを作成しました。ビーラインシェルを使用しているユーザーanonymousに対してHiveパーミッションが拒否されました

Hiveシェルからの読み込み/書き込みクエリは実行できますが、ビーラインは実行できません。

この問題に関する多くの提案と回答が見つかりました。
すべての提案では、それぞれのテーブルごとにuserXの許可を与えるために言及されました。
しかし、匿名ユーザーのアクセス許可を一度に設定する方法はわかりません。

なぜ私はbeelineまたはJavaプログラムからデータにアクセスしている間にユーザーを匿名にしていますか?

ビーラインシェルとJava JDBC接続の両方からデータを読み取ることができます。
しかし、テーブルにデータを挿入することはできません。

これはjdbc接続です.jdbc:hive2:// hadoop01:10000です。

許可が拒否されました::以下

は、私は挿入要求の間、取得していますエラーでユーザー=匿名アクセス= WRITE、iノード= "/ユーザー/ハイブ/倉庫/ test_log/.hive-staging_hive_2017-10- 07_06-54-36_347_6034469031019245441-1" :Hadoopの:スーパーグループ:drwxr-XR-X

+1

あなたのJDBC接続URLとは何ですか?上記の質問に実際のエラーを追加することもできます。 – Shubhangi

+0

@Shubhangi私は自分の投稿を編集しています。私は接続URLとエラーメッセージを含めました。 – sachin

答えて

3

ビーラインの構文は、私は、ユーザー名が欠落していると仮定し

beeline -n username -u "url" 

です。また、誰が、Hadoopのユーザーは、テーブルの権限を完全に制御を持っていない場合、あなたはノーデータベース場合は設定hive.exec.stagingdir

+0

ステージングのディレクトリを変更しようとしましたが、ハイブでエラーが発生しました '実行エラーで失敗した上書きクエリを挿入し、org.apache.hadoop.hive.ql.exec.MoveTaskのコード1を返します' – sachin

+0

おそらく、 user = anonymous'は宛先テーブルへのアクセス許可を持っていません –

0

でステージングディレクトリを再配置しようとすることができ、とにかく

そのテーブルへのアクセスをWRITEしていませんhive2:// hadoop01:10000 /デフォルト

その後、ビーラインは、データベースDEFAに接続

JDBCのように、接続するための接続URLで指定されていますULTを使用し、データをテーブルに挿入する際には、まずデータがデフォルトデータベースの一時テーブルにロードされ、実際のテーブルにロードされます。

したがって、ユーザーにDEFAULTデータベースへのアクセス権を付与するか、アクセス権のあるデータベースに接続する必要があります。

JDBC:hive2:// hadoop01:10000/your_db

関連する問題