Преобразование набора данных Spark в RDD приводит к искажению данных
Я использую spark-xml для чтения следующих данных:
val ds = spark.read
.format("com.databricks.spark.xml")
.option("rowTag", "some_tag")
.load(xmlPath)
.select("field1", "field2", "field3")
.as[SomeCaseClass]
На первый взгляд все работает отлично; когда я бегу
ds.take(20).foreach(println)
Я вижу данные, которые я ожидаю (куча строк). Но что-то не так под капотом; когда я смотрю на основной СДР:
ds.rdd.take(20).foreach(println)
одно из полей искажено в странный список чисел, таких как
[0,2000000045,45,6800000008,6f67657461437b7b,a7d7d434f547972,67657461435b5b0a,69636f533a79726f,5b5b0a5d5d797465,79726f6765746143,6c6f6e686365543a,69636f537c79676f,5d5d797465,6576726573657270]
Некоторые из них выглядят как шестнадцатеричные, но кроме этого я понятия не имею, что с этим делать. Насколько я понимаю, что Dataset
а также Dataframe
объекты - это просто обертки вокруг СДР, поэтому, даже если никто не знает, что делать с моей конкретной проблемой, я бы согласился объяснить, как Dataset
может работать нормально, даже если основной RDD искажен.