J'ai un tas de fichiers de 100 Go sur hdfs avec des codages de fichiers mixtes (malheureusement dans le stockage blob Azure). Comment puis-je déterminer les encodages de fichiers de chaque fichier? Une commande de ligne de commande dfs serait idéale. Merci.Comment déterminer le codage de fichier du fichier sur hdfs (Azure blob storage)?
Répondre
J'ai fini par obtenir les résultats dont j'avais besoin en redirigeant le début de chaque fichier dans le stockage de blob vers un tampon local, puis en appliquant l'utilitaire unix file
. Voici ce que la commande ressemble à un fichier individuel:
hdfs dfs -cat wasb://[email protected]/path/to/file | head -n 10 > buffer; file -i buffer
Cela vous obtient quelque chose comme:
buffer: text/plain; charset=us-ascii
Vous pouvez https://azure.microsoft.com/en-us/documentation/articles/xplat-cli-install/
La commande azure storage blob list
et azure storage blob show
retournerez toutes les propriétés blob disponibles, y compris contentType, ContentLength, les métadonnées.
Si cette information ne contient pas ce que vous voulez - encodages de fichiers, je pense que vous devez définir/définir votre propre metadata
comme file-encoding
pour chaque fichiers. Vous pouvez ensuite le récupérer via l'outil CLI.
Avez-vous réglé le « Content-Encoding » lors du téléchargement des fichiers? Si oui, vous pouvez l'obtenir à partir des propriétés des blobs. Si non, vous pouvez obtenir une partie d'un blob comme binaire, et utiliser un programme de détection d'encodage pour deviner l'encodage du blob. Voici un paquet python pour détecter l'encodage: [chardet] (https://pypi.python.org/pypi/chardet) –