Azure Databricks使用CAST转VARCHAR报错DataType varchar is not supported求助
问题解决:Spark SQL中VARCHAR类型不支持的替代方案
Spark SQL(包括你使用的Azure 10.4 LTS环境,对应Apache Spark 3.2.1)并不支持VARCHAR数据类型,同时字符串拼接也不能用+操作符,以下是修正后的解决方案:
修正后的查询语句
写法1:使用concat()函数完成字符串拼接
SELECT ID, concat('Emp', CAST(Row_Number() Over(Partition by ID ORDER BY ID) As STRING)) as col FROM EMPMaster
写法2:使用||操作符(需确保Spark SQL兼容模式开启)
SELECT ID, 'Emp' || CAST(Row_Number() Over(Partition by ID ORDER BY ID) As STRING) as col FROM EMPMaster
关键调整说明
- 类型替换:将
VARCHAR改为Spark SQL支持的STRING类型,这是导致ParseException的直接原因。 - 拼接方式修正:Spark SQL不支持用
+拼接字符串,必须使用concat()函数或||操作符。 - 窗口逻辑提示:当前窗口函数按
ID分区并排序,每个ID组内生成的行号都是1,若需要生成跨组的连续序列,需调整Partition by的字段。
内容的提问来源于stack exchange,提问作者Tanvi Mirza
相关产品推荐
相关产品推荐

