2017-01-06 7 views
0

sqoopを使用してRDBMSからハイブにデータをロードしようとしています。ハイブカウント(*)が無期限に実行され、データに値があらかじめ入力されています

データでハイブテーブルを作成し、カウント(*)を実行しようとすると、クエリは永遠に実行されます。また、(外部の)ハイブテーブルを削除し、hdfsディレクトリからすべてを削除してから同様のものを作成すると、hdfsディレクトリからすべてのものを削除しても、テーブルに古いデータ(削除されたテーブルと同じ)事実、ゴミもクリアされています。

でも、データが入力され、カウント(*)が無期限に実行されます。

UPDATE 1

そのスタンドアローンサンドボックスhortonworks(2.4)環境。 ハイブからテーブルを削除し、HDFSから関連ファイルも削除しました。 データを作成して読み込むためのスクリプトがあります。

drop table employee; 

とコマンド

hadoop fs -rm -r /user/hive/warehouse/intermidiateTable/* ,and, 
hadoop fs -rm -r .Trash/Current/user/hive/warehouse/intermidiateTable/* 

次I実行して、私はこれと同じクエリを使用してテーブルを作成します。

create external table employee (id int, name string, account_no bigint, balance bigint, date_field timestamp, created_by string, created_date string,batch_id int, updated_by string, updated_date string) 
      row format delimited 
      fields terminated by ',' 
      lines terminated by '\n' 
      location '/user/hive/warehouse/intermidiateTable'; 

とするとき、私はテーブルが移入されますクエリを選択ください古いデータ Als0では、選択カウント(*)が無期限に実行されます。

おすすめの解決方法

+0

正確なシェルとHQL(Hive Query Language)コマンドを共有できますか? DROP文を使用したか、削除されたファイルのみを使用しましたか?データフォーマット、行数、ファイル数、合計サイズの特性も与えます。 Plusクラスタの基本的な詳細Hadoopモード、クラスタサイズ、ノードの特性この情報を質問に追加することができます。 –

+0

問題のUPDATE 1を確認してください。@IvanGeorgiev –

+0

HIVEでフォーマットされた従業員を記述し、ファイルパスを取得し、正しいファイルを削除していることを確認し、dfs -lsコマンドを実行してください。 –

答えて

0

ウェアハウスディレクトリ内に外部テーブルを作成する場合、テーブルを '外部'として宣言する目的は何ですか?

外部テーブルがウェアハウスディレクトリの外にあると想定されているため、自分自身をハイブするのではなくデータファイルを制御できます。

+0

ありがとう@Pushkr、それは働いた –

関連する問題