Я пытаюсь прочитать файл схемы (который является текстовым файлом) и применить его к моему CSV-файлу без заголовка.Поскольку у меня уже есть файл схемы, я не хочу использовать опцию InferSchema
, которая является служебной.
Мой файл входной схемы выглядит следующим образом:
"num IntegerType","letter StringType"
Я пытаюсьниже код для создания файла схемы,
val schema_file = spark.read.textFile("D:\\Users\\Documents\\schemaFile.txt")
val struct_type = schema_file.flatMap(x => x.split(",")).map(b => (b.split(" ")(0).stripPrefix("\"").asInstanceOf[String],b.split(" ")(1).stripSuffix("\"").asInstanceOf[org.apache.spark.sql.types.DataType])).foreach(x=>println(x))
Я получаю сообщение об ошибке, как показано ниже
Exception in thread "main" java.lang.UnsupportedOperationException: No Encoder found for org.apache.spark.sql.types.DataType
- поле (класс: "org.apache.spark.sql.types.DataType", name:" _2 ") - корневой класс:" scala.Tuple2 "
и пытается использовать его как файл схемы, используя spark.read.csv
, как показано ниже, и записать его как файл ORC
val df=spark.read
.format("org.apache.spark.csv")
.option("header", false)
.option("inferSchema", true)
.option("samplingRatio",0.01)
.option("nullValue", "NULL")
.option("delimiter","|")
.schema(schema_file)
.csv("D:\\Users\\sampleFile.txt")
.toDF().write.format("orc").save("D:\\Users\\ORC")
Нужна помощь для преобразования текстового файла в файл схемы и преобразования моего входного CSV-файла в ORC.