Я читал таблицу из БД MapR со Spark.Но столбец отметки времени выводится как InvalidType.При чтении данных из базы данных Mapr также невозможно задать схему.
root
|-- Name: string (nullable = true)
|-- dt: struct (nullable = true)
| |-- InvalidType: string (nullable = true)
Я пытался привести столбец к отметке времени, но получил следующее исключение.
val df = spark.loadFromMapRDB("path")
df.withColumn("dt1", $"dt" ("InvalidType").cast(TimestampType))
.drop("dt")
df.show(5, false)
com.mapr.db.spark.exceptions.SchemaMappingException: невозможно получить схему для столбца {dt} в com.mapr.db.spark.sql.utils.MapRSqlUtils $ .convertField (MapRSqlUtils.scala: 250) вcom.mapr.db.spark.sql.utils.MapRSqlUtils $ .convertObject (MapRSqlUtils.scala: 64) по адресу com.mapr.db.spark.sql.utils.MapRSqlUtils $ .convertRootField (MapRSqlUtils.scala: 48) по адресу com.mapr.db.spark.sql.utils.MapRSqlUtils $$ anonfun $ documentsToRow $ 1.apply (MapRSqlUtils.scala: 34) в com.mapr.db.spark.sql.utils.MapRSqlUtils $$ anonfun $ documentsToRow $ 1.l.scala: 33) в scala.collection.Iterator $$ anon $ 12.nextCur (Iterator.scala: 434) в scala.collection.Iterator $$ anon $ 12.hasNext (Iterator.scala: 440) в scala.collection.Iterator $$ anon $ 11.hasNext (Iterator.scala: 408) в org.apache.spark.sql.catalyst.expressions.GeneratedClass $ GeneratedIterator.processNext (Неизвестный источник) в org.apache.spark.sql.execution.BufferedRowIterator.hasNext (BufferedRowIterator.java:43) в org.apache.spark.sql.execution.WholeStageCodegenExec $$ anonfun $ 8 $ далее(WholeStageCodegenExec.scala: 395) в org.apache.spark.sql.execution.SparkPlan $$ anonfun $ 2.apply (SparkPlan.scala: 234) в org.apache.spark.sql.execution.SparkPlan $$ anonfun $ 2.apply(SparkPlan.scala: 228) в org.apache.spark.rdd.RDD $$ anonfun $ mapPartitionsInternal $ 1 $$ anonfun $ apply $ 25.apply (RDD.scala: 827) в org.apache.spark.rdd.RDD $$anonfun $ mapPartitionsInternal $ 1 $$ anonfun $ apply $ 25.apply (RDD.scala: 827) в org.apache.spark.rdd.MapPartitionsRDD.compute (MapPartitionsRDD.scala: 38) в org.apache.spark.rdd.RDD.computehereRead(RDD.scala: 323) в org.apache.spark.rdd.RDD.iterator (RDD.scala: 287) в org.apache.spark.scheduler.ResultTask.runTask (ResultTask.scala: 87) в org.apache.spark.scheduler.Task.run (Task.scala: 108) в org.apache.spark.executor.Executor $ TaskRunner.run (Executor.scala: 338) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:624) в java.rung..java: 748)
Любая помощь будет оценена.