【发布时间】:2018-11-03 04:15:08
【问题描述】:
我正在尝试读取 Schema 文件(这是一个文本文件)并将其应用到我的 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”,名称:“_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。
【问题讨论】:
标签: scala apache-spark-sql schema orc