无法使用此类签名解析引用StructField

时间:2016-10-12 10:28:58

标签: scala apache-spark import signature bigdata

我复制了一个工作示例,我稍微改了一下,但核心总是一样的,但我在StructField点总是遇到这个错误:

  

无法使用此类签名解析引用StructField

并且还在签名中给了我这个:

  

类型不匹配,预期:数据类型,实际StringType

以下是我遇到问题的代码部分:

import org.apache.avro.generic.GenericData.StringType
import org.apache.spark
import org.apache.spark.sql.types.StructField
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.types._
     object Test{

      def main(args: Array[String]): Unit = {

             val file = "/home/ubuntu/spark/MyFile"
                val conf = new SparkConf().setAppName("Test")
                val sc = new SparkContext(conf)
                val read = sc.textFile(file)
                val header = read.first().toString
                //generate schema from first csv row
                val fields = header.split(";").map(fieldName => StructField(fieldName.trim, StringType, true))
                val schema = StructType(fields)
    }
    }

我无法理解我错在哪里。 我正在使用Spark版本2.0.0

由于

1 个答案:

答案 0 :(得分:0)

看起来GenericData.StringType是一个问题。使用别名:

import org.apache.avro.generic.GenericData.{StringType => AvroStringType}

或删除此导入(您不能使用它)。