Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

383
Views
Regex para analizar el URI de Azure Data Lake Storage Gen2 para producción y pruebas con Azurite

En mi aplicación Java, uso Azure Data Lake Storage Gen2 para almacenamiento ( ABFS ). En la clase que maneja las solicitudes al sistema de archivos, obtengo una ruta de archivo como entrada y luego uso algunas expresiones regulares para extraer la información de conexión de Azure.

El URI de Azure Data Lake Storage Gen2 tiene el siguiente formato:

 abfs[s]://<file_system>@<account_name>.dfs.core.windows.net/<path>/<file_name>

Uso la siguiente expresión regular abfss?://([^/]+)@([^\\.]+)(\\.[^/]+)/?((.+)?) para analizar un determinado ruta del archivo a extraer:

  • sistema de archivos
  • nombre de la cuenta
  • sufijo de cuenta
  • rutarelativa (ruta + nombre_archivo)

A continuación se muestra solo un código Java de prueba con comentarios que indican el resultado/valor en cada variable después de la coincidencia.

 private void parsePath(String path) { //path = abfs://storage@myaccount.dfs.core.windows.net/selim/test.csv Pattern azurePathPattern = Pattern.compile("abfss?://([^/]+)@([^\\.]+)(\\.[^/]+)/?((.+)?)"); Matcher matcher = azurePathPattern.matcher(path); if (matcher.find()) { String fileSystem = matcher.group(1); //storage String accountName = matcher.group(2); //myaccount String accountSuffix = matcher.group(3); //.dfs.core.windows.net //relativePath is <path>/<file_name> String relativePath = matcher.group(4); //selim/test.csv } }

El problema es cuando decidí usar Azurite , que es un servidor (emulador) compatible con Azure Storage API que me permite ejecutar pruebas unitarias contra este emulador en lugar de contra un servidor Azure real como se recomienda en la documentación de Microsoft.

Azurite usa un URI de archivo diferente al de Azure, por lo que esto hace que mi Regex anterior no sea válido para fines de prueba. El URI del archivo de Azurite tiene el siguiente formato:

 abfs[s]://<file_system>@<local_ip>:<local_port>/<account_name>/<path>/<file_name>

Azurite default account_name es devstoreaccount1 , por lo que aquí hay una ruta de ejemplo para un archivo en Azurite:

 abfs://storage@127.0.0.1:10000/devstoreaccount1/selim/test.csv

Si se analiza mediante la expresión regular anterior, esta será la salida, lo que provocará llamadas de API incorrectas al servidor de Azurite:

  • fileSystem: almacenamiento (correcto)
  • accountName: 127 (incorrecto, debería ser: devstoreaccount1 )
  • sufijo de cuenta: .0.0.1:10000 (incorrecto, debe ser una cadena vacía )
  • ruta relativa: devstoreaccount1/selim/test.csv (incorrecto, debería ser selim/test.csv )

¿Es posible tener una expresión regular de 1 que pueda manejar ambos URI o 2 expresiones regulares para resolver este problema?

over 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!