摂取プロセスに問題があり、Hiveのテーブルにパーティションが追加されましたが、HDFSのパスは実際には存在しませんでした。この問題は修正されましたが、まだこれらの不良パーティションがあります。 Tezを使用してこれらのテーブルをクエリすると、FileNotFound例外が発生し、存在しないHDFSの場所を指しています。私たちがTezの代わりにMRを使用すると、クエリが機能します(これは非常に混乱しますが)が遅すぎます。メタストア内のパーティションはHDFSに存在しません
このプローブを持つすべてのパーティションをリストする方法はありますか? MSCK REPAIR
は、データがHDFSに存在するがHiveにはパーティションが存在しないという反対の問題を処理しているようだ。
EDIT:詳細ここ は、ファイルが見つからない例外の出力です:
java.io.FileNotFoundException: File hdfs://<server>/db/tables/2016/03/14/mytable does not exist.
私はshow partitions <db.mytable>
を実行した場合、私はdt=2016-03-14
のための1つを含む、すべてのパーティションを、取得します。
show table extended like '<db.mytable>' partition(dt='2016-03-14'
は、同じ場所: location:hdfs://server/db/tables/2016/03/14/mytable
を返します。
別のパーティションの場所はどのように見えますか? –
他のパーティションは 'location:hdfs:// server/db/tables/2017/06/07/mytable'とほとんど同じです。唯一の違いは、実際に存在することです。 – Andrew
パスの1つ(metastore/hdfs)に白い文字が含まれていないか確認してください。 –