![](/img/trans.png)
[英]Spark excel: reading excel file with multi line header throw an exception: Method threw 'scala.MatchError' exception
[英]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.