split函数在spark和presto/hive中的区别

结论

split函数在spark3和presto中,虽然用法一样,但传递分隔符参数时不同,Spark的分隔符参数是一个正则表达式,如果要用.点号等分割,需要双反斜杠 `\\` 转义。presto中是普通字符串。

一、在spark中:

使用 `split`函数分割字符串时,输入的分隔符参数是一个正则表达式,而不是一个常规的字符串。在正则表达式中,点号 `.` 表示匹配任意单个字符,因此在使用 `split` 函数时,需要对点号进行转义,表示点号的字面上的意义。在 Spark SQL 中使用 `split` 函数分割包含点号的字符串时,应该使用双反斜杠 `\\.` 进行转义。

例如,如果你的字段 col1 的值为 '11.1',你可以使用以下代码在 Spark SQL 中使用 `split` 函数分割:

```
SELECT split(col1, '\\.');
```

上述代码会得到 `['11', '1']` 这个结果,其中第一个元素是点号之前的字符串,第二个元素是点号之后的字符串。如果使用未转义的点号作为分隔符,则会将字段的每个字符都当做一个分割符来处理,从而导致结果为空。因此在使用 `split` 函数时,需要注意传入的分隔符是否需要进行转义。

二、为什么presto中不需要转义

在 Spark SQL 和 Presto 中,`split()`函数的用法是一致的,但在传递分隔

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值