2016-03-23 4 views
0

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)?

+0

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) –

Répondre

1

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 
0

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.