Como verificar se uma partição existe no Hive?

xingbin:

I têm uma tabela colmeia, que é repartido por coluna dt. Eu preciso adicionar uma partição, se ele não existe, por exmaple, dt='20181219'.

Agora eu estou usando HiveMetaStoreClient#getPartition(dbName, tableName, 20181219). Se a partição não existe, em seguida, pegar NoSuchObjectExceptione adicioná-lo.

Existe alguma maneira elegante de conseguir isso em Java?

Stephen C:

Use add_partition(Partition, ifNotExists, needResults)( javadoc ) ... que (se o segundo argumento é true) só irá criar uma partição se ele ainda não existir.

Em alternativa, basta usar add_partition(Partition)para adicionar a partição sem um teste , e pegar o AlreadyExistsExceptioncaso ele ocorra.


Qualquer esquema que envolve testar que uma ação é possível e, em seguida, fazendo que a ação tem uma condição de corrida potencial. Entre o "teste" eo "fazer", algum outro agente (rosca, cliente, qualquer que seja) poderia fazer uma ação (o mesmo ou um diferente), que fará com que sua tentativa de falhar.

Portanto, sua abordagem atual não só é feio. Ele também tem uma condição de corrida potencial se partições poderia ser criado por vários agentes.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=138942&siteId=1
Recomendado
Clasificación