Я читаю XML-файл в Scala
<tag1>
<tag2 id="0" attr1="abc" ... />
..
</tag1>
Это уже было сообщено как проблема и закрыто.
https://github.com/databricks/spark-xml/pull/303
Однако я не могу решить это.
import org.apache.spark.sql.SparkSession
import com.databricks.spark.xml._
import org.apache.spark.sql.types.{StructType, StructField, DoubleType,StringType}
import org.apache.spark.sql.{Row, SaveMode}
object stack {
def main(args: Array[String]) {
val spark = SparkSession.builder.getOrCreate()
val customSchema = StructType(Array(
StructField("id", DoubleType, nullable = true),
StructField("attr1", StringType, nullable = true),
...
...
))
val df = spark.read
.option("rowTag", "tag2")
.format("com.databricks.spark.xml")
.schema(customSchema)
.load("dummy.xml")
import spark.sql
import spark.implicits._
df.createOrReplaceTempView("temp1")
sql("SELECT * from temp1 limit 5").show()
}
}
Однако df.show(5)
не отображает строк.
В резолюции говорится об использовании XmlInputFormat, который я не пробовал, если кто-то может помочь, то это будет полезно.
Подобный тип решения работает с вложенным XML-файлом.
<books>
<book> .. </book>
<name> abc </name>
</books>
Я хочу увидеть кадр данных со значениями для отображения. а позже я хочу прочитать много XML-файлов и присоединиться к ним в SQL-запрос.