Spark обработка XML-данных в текстовом файле - PullRequest
0 голосов
/ 22 июня 2019

Я новичок в зажигании Скала. Как мы можем обрабатывать xml в текстовом файле вместе с другими данными, разделенными данными

Входной файл

Johndoe|Newyork|USA|<root><abc1 is=“tug” zip=“4567” state=“NY”/></root>
Smith|Jersey|USA|<root>abc2 is=“tug” zip=“7899” state=“NJ”/></root>

Выход должен быть

Johndoe|Newyork|USA|tug|4567|NY
Smith|Jersey|USA|tig|7899|NJ

Ниже приведен код, который я пробовал, но я получаю сообщение об ошибке

Ошибка: (21, 21) конструктор не может быть создан для ожидаемого типа; найдено: (T1, T2, T3, T4) требуется: строка file1.map {case (имя: строка, город: строка, страна: строка, xml2) =>

    import scala.xml._
    import org.apache.spark.sql.types._
    import org.apache.log4j.{Level, LogManager, Logger}
    import org.apache.spark.sql.{DataFrame, Row, SQLContext, SparkSession}
    import com.databricks.spark.xml._
    object xml_parse {
      def main(args: Array[String]): Unit = {
        Logger.getLogger("org").setLevel(Level.OFF)
        LogManager.getRootLogger.setLevel(Level.WARN)
        val spark= SparkSession.builder()
          .appName("parsexml")
          .master("local[*]")
          .getOrCreate()
        val sc=spark.sparkContext
        val sq=spark.sqlContext
        sc.setLogLevel("WARN")

        val file1= sc.textFile("in\\input.txt")
        file1.map{ case (name, city, country, xml2) =>
          (name,
            city,
            country,
          (XML.loadString(xml2) \\ "root" \\ "abc1").text)
        }.collect().foreach(println)
 }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...