la ruche 0.13 msck réparer la table répertorie uniquement les partitions pas dans metastore
Je suis en train d'utiliser de la Ruche(0.13) msck repair table
commande pour récupérer des partitions et il ne répertorie que les partitions ne sont pas ajoutées à metastore au lieu de les ajouter à metastore.
voici la sortie de la commande
partitions not in metastore externalexample:CreatedAt=26 04%3A50%3A56 UTC 2014/profileLocation="Chicago"
voici comment je suis de la création de la table externe
CREATE EXTERNAL TABLE IF NOT EXISTS ExternalExample(
tweetId BIGINT, username STRING,
txt STRING, CreatedAt STRING,
profileLocation STRING,
favc BIGINT,retweet STRING,retcount BIGINT,followerscount BIGINT)
COMMENT 'This is the Twitter streaming data'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
location '/user/hue/exttable/';
Suis-je raté quelque chose?
OriginalL'auteur user1178585 | 2014-11-05
Vous devez vous connecter pour publier un commentaire.
J'ai eu un problème similaire avec le MSCK RÉPARATION TABLEAU liste les partitions qui ne sont pas dans le metastore mais pas réellement de les ajouter (et pas de message d'erreur).
J'ai essayé d'ajouter manuellement la partition avec la commande ALTER TABLE ADD PARTITION de commande, et cela m'a donné un message d'erreur, me conduisant à la cause racine qui était que le HDFS dossier contenant les "disparus" de la partition avait été mis en place avec des autorisations incorrectes.
Une fois les autorisations problème a été résolu, puis le MSCK RÉPARATION TABLEAU de commande a fonctionné correctement.
Si vous rencontrez ce problème, il peut être intéressant d'essayer de l'ajouter manuellement à l'aide de l'instruction ALTER TABLE ADD PARTITION de commande. Il peut produire un utile message d'erreur qui pourrait vous aider à déterminer la cause racine du problème.
OriginalL'auteur chcook
Assurez-vous que le nom de la partition définie dans votre définition de la table de correspondance le nom de la partition sur hdfs.
Par exemple, dans votre création de la table exemple, je vois que vous n'avez pas défini de toutes les partitions.
Je pense que vous voulez faire quelque chose comme ceci (notez l'utilisation de PARTITIONNÉE PAR):
Puis sur hdfs, vous devriez avoir la structure de dossier suivante:
CreatedAt
etprofileLocation
dans le SQL sont insensibles à la casse, mais ils doivent être tous en minuscules dans les chemins d'accès aux fichiers.OriginalL'auteur hba
Les noms des partitions pour
MSCK REPAIR TABLE ExternalTable
doit être en minuscules alors seulement il va ajouter de la ruche metastore, j'ai été confrontée au même problème dans la ruche 1.2.1 où il n'y a pas de support pourALTER TABLE ExternalTable RECOVER PARTITION
, mais après avoir passé quelques temps à mettre au point trouvé le problème de la partition des noms en " i " minuscule.e/some_external_path/mypartion=01
est valide et/some_external_path/myParition=01
est invalide;Faire de votre
profileLocation
àprofilelocation
ouprofile_location
et de test, il devrait fonctionner.Ma question est ici Pas en mesure de récupérer des partitions via alter table dans la Ruche 1.2
OriginalL'auteur Sushil Ks
Ruche stocke une liste de partitions pour chaque table, dans son metastore. Si, cependant, de nouvelles partitions sont directement ajoutés à HDFS (manuellement par hadoop fs -mettre la commande), le metastore ne sera pas au courant de ces partitions.
vous devez ajouter une partition
ALTER TABLE ExternalExample AJOUTER une PARTITION
pour chaque partition
ou, en bref, vous pouvez exécuter
MSCK RÉPARER la TABLE ExternalExample;
Il va ajouter toutes les partitions existantes sur HDFS, mais pas dans metastore à la metastore.
Ref https://issues.apache.org/jira/browse/HIVE-874
OriginalL'auteur user1989252
1) Vous devez spécifier les partitions
2) les noms des partitions doivent avoir toutes les lettres minuscules . Voir ce - https://singhanuvrat.com/hive-partition-column-name-camelcase-bad-idea-b89796d4e741#.16d7uqfot
OriginalL'auteur Arati
Vous manque juste la
PARTITIONED BY (CreatedAt STRING, profileLocation STRING)
.OriginalL'auteur Santiago Trias
vous pourriez ne pas être en cours d'exécution comme le ruche utilisateur:
sudo -u hive** hive -e "set hive.msck.path.validation=ignore;msck repair table T1"
set hive.msck.path.validation=ignore;
( c'est pour les tables avec un grand nombre de partitions.)OriginalL'auteur Jeff Wahl