大家好,又见面了,我是你们的朋友全栈君。
spark加载Oracle表的Number字段,直接写入关系表会被转成decimal双精度类型
解决方式:
1.构建Jdbc会话
public class JdbcOracleDialect extends JdbcDialect {
@Override
public boolean canHandle(String url) {
return url.startsWith(“jdbc:oracle”);
}
@Override
public Option<DataType> getCatalystType(int sqlType, String typeName, int size, MetadataBuilder md) {
if (sqlType == Types.NUMERIC && typeName.equals(“NUMBER”)){
return Option.apply(DataTypes.LongType);
}
return Option.empty();
}
}
然后注册在SparkSession声明后进行注册
JdbcDialects.registerDialect(new JdbcOracleDialect());
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/163931.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...