Los científicos de datos y los ingenieros de aprendizaje automático a menudo no saben que la mayoría de los datos que obtienen suelen estar en formato de archivo CSV o, a veces, JSON. Sin embargo, este es un desarrollo positivo ya que debemos manejar grandes cantidades de datos, y cualquier formato que facilite la lectura e interpretación de los datos debe ser muy valorado. Y aquellos que trabajan con formatos de datos CSV son muy conscientes de las ventajas de este formato de datos.
Dicho esto, es posible que no siempre sea así. A menos que esté trabajando en un lenguaje completamente diferente (por ejemplo, Python), lo más probable es que esté trabajando en un entorno Java. También es más probable que recibamos datos en formato XML que en cualquier otro formato, ya que XML ha sido durante mucho tiempo el estándar para la transferencia de datos. Como resultado, necesitaremos extraer los datos de los archivos XML y crear canalizaciones de datos a partir de la información que hemos recopilado.
¿Qué es exactamente XML?
Con XML, que significa Extensible Markup Language, se pretendía que tanto las computadoras como las personas pudieran captar el contenido del documento. No hace falta decir que los diseñadores se inspiraron en el muy popular HTML. Quizás tenga razón al afirmar que nadie entiende HTML y que solo vemos el resultado final entregado por los navegadores. Es posible que se esperara que XML fuera visto únicamente por los desarrolladores y, como resultado, debería haber funcionado. Más tarde, sin embargo, pasamos a la Arquitectura Orientada a Servicios (SOA), donde XML ha surgido como el formato de datos estándar de facto para la comunicación entre servicios. Aquí veremos cómo analizar XML en Spark-Scala, que se tratará en el próximo artículo.
¿Cuál es el propósito de XML?
Al producir un documento XML, podemos etiquetar los datos de una manera similar a cómo etiquetamos los datos cuando construimos un documento HTML. XML combina muchas de las excelentes características de HTML, pero también se creó para resolver algunas de las deficiencias de HTML. Las etiquetas XML son realmente creadas por el usuario y almacenadas en un esquema, que puede ser una definición de tipo de documento (DTD) o un documento escrito en el lenguaje de programación XML Schema. Además, los espacios de nombres pueden ayudar a garantizar que tenga etiquetas distintas para nuestro documento XML. La sintaxis de XML tiene más restricciones que HTML, sin embargo, esto da como resultado una navegación más rápida y económica. La opción de construir nuestro propio sistema de etiquetado nos ofrece la libertad de clasificar y organizar los datos tanto para la comodidad de recuperación como para la facilidad de presentación. Almacenamiento y recuperación de datos, transferencia de datos a través de diversos sistemas, la transformación de datos y la presentación de información son posibles actualmente con XML, que ya se está utilizando para la publicación. A medida que madura y se vuelve más capaz, XML puede permitir la recuperación y presentación de datos de una sola fuente.
Trabajando con XML en Scala:
Scala respeta XML como si fuera un miembro de primera clase de la comunidad. En este caso, en lugar de incrustar documentos XML en strings, podemos insertarlos directamente en nuestro código, tal como lo haríamos con un número entero o doble.
Por ejemplo: podemos generar un valor llamado XML y aplicarle contenido XML de ejemplo. Se crea una nueva instancia de scala.xml cuando se ha analizado. elemental El paquete Scala scala.xml ofrece clases para generar documentos XML, procesarlos, leerlos y guardarlos.
Scala
scala> val xml = <greet>Hi</greet> xml: scala.xml.Elem = <greet>Hi</greet> scala> xml.getClass res2: Class[_ <: scala.xml.Elem] = class scala.xml.Elem
Veamos cómo podemos descifrarlo. XPath es una potente herramienta para consultar el contenido de un archivo XML. Scala incluye una capacidad de consulta que es similar a XPath, con algunas diferencias menores. En XPath, empleamos barras diagonales «/» y «//» para consultar los documentos XML. Sin embargo, en Scala, el símbolo «/» se usa como operador de división, mientras que el símbolo «//» se usa para comentar el código. Al interactuar con un documento XML, a Scala le gusta utilizar las barras inclinadas inversas «» y «.»
Como ejemplo,
Scala
scala> val xmlDoc = 322 244
Nos gustaría tener en nuestras manos los componentes del símbolo. Podemos usar la consulta XPath para hacer esto.
Scala
scala> val children = xmlDoc \ "symbol" scala> children: scala.xml.NodeSeq = NodeSeq(322, 244)
Usamos la función() en el elemento XML y le indicamos que buscara cualquier elemento de símbolo. Devuelve un objeto scala.xml como instancia. NodeSeq es una colección de Nodes XML que representa una colección de Nodes XML.
Son solo los elementos que son descendientes inmediatos del elemento de destino los que busca la función() (es decir, el símbolo). Si queremos buscar en todos los elementos de la jerarquía comenzando con el elemento de destino, podemos usar la función _() para hacerlo.
Scala
val grandChildren = xmlDoc \\ "units" grandChildren: scala.xml.NodeSeq = NodeSeq(100, 315)
Y podemos acceder a los Nodes de texto contenidos dentro de un elemento usando la función de texto.
Publicación traducida automáticamente
Artículo escrito por aasthakatakwarak y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA