2
在星火SQL中使用JDBC数据源,我们尝试下面的查询运行火花 - NVL函数的数据类型不匹配错误
select nvl(columnName , 1.0) from tablename
给出误差
cannot resolve 'nvl(tablename.`columnname`, 1.0BD)' due to data type mismatch: input to function coalesce should all be the same type, but it's [decimal(38,10), decimal(2,1)]
我知道我们可以用
解决这个select nvl(columnname , CAST(1.0 as decimal(38,10))) from tablename
看起来像我需要找到每列的数据类型并投射到它。
- 有没有其他方法可以处理它?
- 我可以在加载数据框如csv格式时预先给出架构定义。 [https://issues.apache.org/jira/browse/SPARK-16848]
- 如何为每列转换加载的Dataframe数据类型。
感谢您的答复。我明白第1点和第2点的答案,关于第3点'选择'行动的开销。 –
'select'的开销很低(特别是当你使用代码生成时);它可能比在某些数据源中发生的转换更快。 –