2 votes

Comment obtenir le nom de la colonne de partition d'une table Hive ?

Je développe un script unix script où je vais traiter des tables Hive partitionnées par la colonne A ou la colonne B. J'aimerais savoir sur quelle colonne une table est partitionnée afin de pouvoir effectuer des opérations ultérieures sur ces instances de partition.

Existe-t-il une propriété dans Hive qui renvoie directement la colonne de partition ?

Je pense que je vais devoir faire une show create table et extraire le nom de la partition d'une manière ou d'une autre s'il n'y a pas d'autre moyen possible.

1voto

Aditya Points 1571

Ce n'est peut-être pas la meilleure solution, mais une autre approche consiste à utiliser l'option décrire commande

Créer un tableau :

create table employee ( id int, name string ) PARTITIONED BY (city string);

Comando:

hive -e 'describe formatted employee'  | awk '/Partition/ {p=1}; p; /Detailed/ {p=0}'

Salida:

# Partition Information
# col_name              data_type               comment

city                    string

vous pouvez l'améliorer en fonction de vos besoins.

Une autre option que je n'ai pas explorée consiste à interroger les tables du référentiel de la méta-boutique pour obtenir les informations sur les colonnes de partition d'une table.

1voto

Karthik Points 11

Grâce à l'api scala/java, nous pouvons accéder au méta-magasin Hive et obtenir les noms des colonnes de la partition org.apache.hadoop.hive.metastore.HiveMetaStoreClient

val conf = new Configuration()
conf.set("hive.metastore.uris","thrift://hdppmgt02.domain.com:9083")
val hiveConf = new HiveConf(conf, classOf[HiveConf])
val metastoreClient = new HiveMetaStoreClient(hiveConf)

metastoreClient.getTable(db, tbl).getPartitionKeys.foreach(x=>println("Keys : "+x))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X