Comment utiliser regex pour inclure / exclure certains fichiers d'entrée dans sc.textFile?
J'ai essayé de filtrer des dates pour des fichiers à l'aide d'Apache spark à l'intérieur du fichier RDD fonction sc.textFile()
.
J'ai tenté de faire ce qui suit:
sc.textFile("/user/Orders/201507(2[7-9]{1}|3[0-1]{1})*")
Ce qui devrait correspondre à la suivante:
/user/Orders/201507270010033.gz
/user/Orders/201507300060052.gz
Une idée de comment réaliser cela?
source d'informationauteur eboni
Vous devez vous connecter pour publier un commentaire.
Regardant la accepté de répondre àil semble qu'il utilise une certaine forme de boule de syntaxe. Elle révèle également que l'API est une exposition de Hadoop est
FileInputFormat
.La recherche révèle que les chemins d'accès fourni à
FileInputFormat
'saddInputPath
ousetInputPath
"peut représenter un fichier, un répertoire, ou, en utilisant la glob, une collection de fichiers et de répertoires". Peut-être,SparkContext
utilise également ces Api pour définir le chemin d'accès.La la syntaxe de la glob comprend:
*
(0 ou plusieurs caractères)?
(un seul caractère)[ab]
(classe de caractères)[^ab]
(niée classe de caractères)[a-b]
(ensemble de caractères){a,b}
(alternance)\c
(caractère d'échappement)Suivant l'exemple de la accepté de répondre, il est possible d'écrire votre chemin, comme:
Il n'est pas clair comment l'alternance syntaxe peut être utilisée ici, car la virgule est utilisée pour séparer une liste de chemins d'accès (comme illustré ci-dessus). Selon zero323's de commentaire, pas de s'échapper est nécessaire: