パーティションがハイブに存在するかどうかを確認する方法?

xingbin:

私は列で分割されているハイブテーブルを持っていますdt私は、exmapleのために、それが存在しない場合は、パーティションを追加する必要がありますdt='20181219'

今、私が使用していますHiveMetaStoreClient#getPartition(dbName, tableName, 20181219)パーティションが存在しない場合は、キャッチNoSuchObjectExceptionし、それを追加します。

Javaでこれを達成するための任意のエレガントな方法はありますか?

スティーブンC:

使用add_partition(Partition, ifNotExists, needResults)javadocの)...(2番目の引数がある場合true、それはまだ存在しない場合のみ、パーティションを作成します)。

また、単に使用add_partition(Partition)パーティションを追加するためにテストせずに、そしてキャッチしAlreadyExistsException、それが発生した場合。


アクションが可能であることをテストし、その行動をしていることを伴う任意のスキームは、潜在的な競合状態を持っています。「テスト」と、「やる」いくつかの他のエージェントとの間で(スレッド、クライアント、何でも)は、アクションあなたの試みは失敗します(同じものまたは異なるもの)を行うことができます。

だからあなたの現在のアプローチは、醜いではありません。パーティションが複数のエージェントによって作成することができれば、それはまた、潜在的な競合状態を持っています。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=139032&siteId=1