我想通过HDFS中的文件传递数据帧的架构,而不要在代码中指定。我尝试从已经问过“ How to create a Schema file in Spark”的问题中获取解决方案,但出现错误:28:错误:未找到:值来源。
我已经经历了为类似问题提供的所有解决方案。任何人都可以提供端到端解决方案,在该解决方案中,我们通过提到的文件来推断模式,而不是在代码中进行硬编码。
import org.apache.spark.sql.types._
def getType(raw: String): DataType = {
raw match {
case "ByteType" => ByteType
case "ShortType" => ShortType
case "IntegerType" => IntegerType
case "LongType" => LongType
case "FloatType" => FloatType
case "DoubleType" => DoubleType
case "BooleanType" => BooleanType
case "TimestampType" => TimestampType
case _ => StringType } }
val schema = Source.fromFile("/haas/cgt/dqar_dev1/data/configfile").getLines()
.toList.flatMap(.split(",")).map(.replaceAll("\"", "").split(" "))
.map(x => StructField(x(0), getType(x(1)), true))