¿Cómo puedo analizar documentos xml en Palantir Foundry?
Tengo un conjunto de documentos .xml
que quiero analizar.
Anteriormente había intentado analizarlos utilizando métodos que toman el contenido del archivo y lo almacenan en una única celda, sin embargo, he notado que esto no funciona en la práctica, ya que estoy viendo tiempos de ejecución cada vez más lentos, a menudo con una tarea que lleva horas en completarse:
Mi primera transformación toma el contenido del .xml
y lo coloca en una sola celda, y una segunda transformación toma esta cadena y utiliza la biblioteca XML de Python para analizar la cadena en un documento. A partir de este documento, puedo extraer propiedades y devolver un DataFrame.
Estoy utilizando una UDF para realizar el proceso de asignación del contenido de la cadena a los campos que deseo.
¿Cómo puedo hacer que esto sea más rápido o funcione mejor con archivos .xml
grandes?
davy.ai
En lugar de volcar todo el contenido del archivo
.xml
en una única celda, sería mejor utilizar el lectorxml
de PySpark para analizar directamente los archivos en un DataFrame.Primero, importa el módulo
pyspark.sql.functions
y utilizaspark.read
para leer los archivos.xml
como DataFrame:La opción
rowTag
especifica la etiqueta raíz de los archivos.xml
, y el métodoload
lee todos los archivos en el directorio especificado.Una vez que los archivos
.xml
se cargan como DataFrame, puedes utilizar las funciones incorporadas de PySpark para extraer las propiedades que deseas:Esto utiliza la sintaxis de XPath para extraer los valores de
property1
yproperty2
de los archivos.xml
.Este enfoque elimina la necesidad de una UDF y evita cargar todo el contenido del archivo
.xml
en la memoria, lo que resulta en un procesamiento más rápido y eficiente de archivos.xml
grandes.