J'ai une table avec 9k partitions, dont je voudrais supprimer environ 1200 (ce qui représente 3 jours)
Je voudrais combiner les hadoop fs -rm
et les expressions régulières pour ces 3 jours, quelque chose comme pr_load_time=2017070([1-4])(\d+)
.Hadoop fs -rm avec l'expression régulière
Les partitions ressemblent à ceci (je veux correspondre seulement les deux premiers ici)
pr_load_time=20170701000317
pr_load_time=20170704133602
pr_load_time=20170705000317
pr_load_time=20170706133602
Est-ce quelque chose comme cela possible? Je pensais à faire correspondre les partitions avec awk et utiliser xargs, mais cela semble être une approche très lente pour supprimer un si grand nombre de fichiers.
Si c'est quelque chose que vous n Exécuté une seule fois, exécutez 4 suppressions génériques: 'hadoop fs -rm"/chemin/pr_load_time = 20170701 * "', ... '" ... 0702 * "' ..., etc. Sinon, vous devrez probablement les supprimer individuellement en utilisant xargs ou des commandes similaires – Jedi
@Jedi oui, j'ai juste besoin de le faire une fois. Donc, si je veux tout supprimer pour le 4 juillet, je commence juste avec 20170704 * et le caractère générique prendra soin de tout après ce "04"? –
Oui. Vous pouvez faire une course sèche en utilisant 'ls' au lieu de' rm'. Vous auriez [besoin de guillemets doubles] (https://stackoverflow.com/a/32738462). – Jedi