Можем ли мы создать XML-файл с конкретным узлом с помощью Spark Scala?

Вероятно, вы используете неправильный файл сертификата, вам нужно создать собственный сертификат, который можно выполнить следующим образом

openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem
openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out server.crt

, а затем использовать server.crt

   var options = {
      key: fs.readFileSync('./csr.pem', 'utf8'),
      cert: fs.readFileSync('./server.crt', 'utf8')
   };
1
задан Naveen Nelamali 17 January 2019 в 06:35
поделиться

1 ответ

Не совсем, но вы можете сделать что-то подобное, используя Spark XML API или API-интерфейс XStream в Spark.

Сначала попробуйте использовать Spark XML API , который наиболее полезен при чтении и записи файлов XML с использованием Spark. Однако на момент написания этой статьи Spark XML имел следующие ограничения.

 1) Adding attribute to root element has not supported.
 2) Does not support following structure where you have header and footer elements. 

  <parent>
       <header></header>
       <dataset> 
          <data attr="1"> suports xml tags and data here</data>
          <data attr="2">value2</data>  
      </dataset>
      <footer></footer>
  </parent>  

Если у вас есть один корневой элемент и следующие данные, то Spark XML - это api.

Кроме того, вы можете посмотреть на XStream API . Ниже приведены инструкции по его использованию для создания пользовательских структур XML.

1) Сначала создайте класс Scala, подобный структуре, которую вы хотели в XML.

case class XMLData(name:String, value:String, attr:String) 

2) Создать экземпляр этого класса

val data = XMLData("bookName","AnyValue", "AttributeValue")

3) Преобразовать объект данных в XML с помощью API XStream. Если у вас уже есть данные в DataFrame, выполните преобразование карты, чтобы преобразовать данные в строку XML и сохранить их обратно в DataFrame. если вы это сделаете, то можете пропустить шаг # 4

val xstream = new XStream(new DomDriver)
val xmlString = xstream.toXML(data)

4) Теперь преобразовать xmlString в DataFrame

val df = xmlString.toDF()

5) Наконец, записать в файл

[115 ]

Вот полный пример с API-интерфейсом XStream

import com.thoughtworks.xstream.XStream
import com.thoughtworks.xstream.io.xml.DomDriver
import org.apache.spark.sql.SparkSession

case class Animal(cri:String,taille:Int)

object SparkXMLUsingXStream{
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.
    builder.master ("local[*]")
    .appName ("sparkbyexamples.com")
    .getOrCreate ()

    var animal:Animal = Animal("Rugissement",150)
    val xstream1 = new XStream(new DomDriver())
    xstream1.alias("testAni",classOf[Animal])
    xstream1.aliasField("cricri",classOf[Animal],"cri")
    val xmlString = Seq(xstream1.toXML(animal))

    import spark.implicits._
    val newDf = xmlString.toDF()
    newDf.show(false)
  }
}

Надеюсь, что это поможет !!

Спасибо

0
ответ дан Naveen Nelamali 17 January 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: