簡體   English   中英

StringType 問題:線程“main”中的異常 scala.MatchError:org.apache.spark.sql.types.StringType@

[英]StringType issue: Exception in thread "main" scala.MatchError: org.apache.spark.sql.types.StringType@

@Override
public Option<DataType> getCatalystType(int sqlType, String typeName, int size, MetadataBuilder md) {
    switch (sqlType) {
    case java.sql.Types.JAVA_OBJECT:
        switch (typeName) {
        case "map(varchar(2147483647),varchar(2147483647))":
            return Option.apply(DataTypes.createMapType(new StringType(), new StringType()));               
        }
        break;
    }
    return super.getCatalystType(sqlType, typeName, size, md);      
}

代碼用於在返回JAVA_OBJECT時支持復雜數據類型。 同樣的代碼,我寫在 Scala 中,工作正常。 但是當在 Java 中使用上面的代碼時,它給出了:

Exception in thread "main" scala.MatchError: org.apache.spark.sql.types.StringType@582b14e2 (of class org.apache.spark.sql.types.StringType).


Scala代碼參考:

override def getCatalystType(sqlType: Int, typeName: String, size: Int, md: MetadataBuilder): Option[DataType] = sqlType match {
    case java.sql.Types.JAVA_OBJECT =>
      typeName match {
        case "map(varchar(2147483647),varchar(2147483647))" => Option(DataTypes.createMapType(StringType, StringType))
        case "BIT" => Option(BooleanType)
        case _ => None
      }
    case _ => None
  }

使用 singleton DataTypes.StringType代替推薦):

...
...(DataTypes.createMapType(DataTypes.StringType, DataTypes.StringType))          

表示字符串值的數據類型。 請使用 singleton DataTypes.StringType

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM