- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试了解 Spark sql 函数遇到的问题 rtrim
.我试图从字符串中删除一个子字符串,但结果与我预期的不一样。当我尝试删除 _count
时来自 test_count
, 我得到 tes
而不是 test
.但是如果我尝试删除 _count
来自 TEST_count
, 我得到 TEST
正如预期的那样。
我的示例代码:
import spark.implicits._
import org.apache.spark.sql.functions.rtrim
case class Test(test_count: String, test1_count: String)
val df = Seq(
Test("test_count", "TEST_count")
).toDF
df
.withColumn("test", rtrim($"test_count", "_count"))
.withColumn("test1", rtrim($"test1_count", "_count"))
.withColumn("test_", rtrim($"test_count", "count"))
.withColumn("test1_", rtrim($"test1_count", "count"))
.show
它的结果:
+----------+-----------+----+-----+-----+------+
|test_count|test1_count|test|test1|test_|test1_|
+----------+-----------+----+-----+-----+------+
|test_count| TEST_count| tes| TEST|test_| TEST_|
+----------+-----------+----+-----+-----+------+
我试图添加
\\
之前
_count
但它没有用。我找到了实现预期结果的另一种方法,但我想更好地了解
trim
在 Spark 中工作。我做错了什么还是行为确实出乎意料?
最佳答案
这是正确的行为。 rtrim
删除所有出现的指定 字符 在字符串的右侧,而不是指定的字符串。所以如果你有 test_count
而你rtrim
_count
,它将删除 _
中的每个字符, c
, o
, u
, n
, t
从右边开始,直到找到一个不是其中之一的字符。这会导致删除最后一个 t
在 test
,但不是 s
因为 s
不在列表中。
test_count
^^^^^^^ all these are in [`_`, `c`, `o`, `u`, `n`, `t`]
^ but this isn't, so the string is trimmed until here
要实现您想要的,您可以使用
regexp_replace
用空字符串替换最后一位。
$
在正则表达式中表示字符串的结尾(右侧)。如果你想用
ltrim
做类似的事情您可以使用
^
在正则表达式中。
df
.withColumn("test", regexp_replace($"test_count", "_count$", ""))
.withColumn("test1", regexp_replace($"test1_count", "_count$", ""))
.withColumn("test_", regexp_replace($"test_count", "count$", ""))
.withColumn("test1_", regexp_replace($"test1_count", "count$", ""))
.show
+----------+-----------+----+-----+-----+------+
|test_count|test1_count|test|test1|test_|test1_|
+----------+-----------+----+-----+-----+------+
|test_count| TEST_count|test| TEST|test_| TEST_|
+----------+-----------+----+-----+-----+------+
关于scala - Spark中rtrim函数的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65709513/
在 SQL Server 中修剪字符串的两端时,是否存在性能差异,或者在构建where 子句? 例如: WHERE RTRIM(LTRIM(SalesPerson)) <> '' 最佳答案 您的查询可
首先分别解释下, trim过滤字符串两端, rtrim过滤字符串尾部,=chop() ltrim过滤字符串首部. 过滤字符串中键的咚咚就只能用str_replace咯. 举个例子说明下, PH
我使用的是 Microsoft SQL Server 2012 Management Studio。在我的下表中,我试图删除从 2019 年 1 月 1 日到 2019 年 1 月 4 日的 5 位数
所以我有这样的字符串(例如): var str = '1234567 ' + '89'; 7后有两个空字符(可以更多)我有一个正则表达式 var text = str.rep
我想从字符串末尾删除“.php”(如果存在)。考虑一下: $filename = 'index'; rtrim($filename,".php");//returns "index" $filenam
美好的一天。我正在编写一个使用 LISTAGG 并返回结果的查询。这是我到目前为止的代码。 select listagg(rtrim(shop_cde, 1), ', ') within
我对 PHP 函数 rtrim() 和 chop() 感到困惑,因为它们的工作原理相似并提供相似的输出。为什么修剪尾随字符有不同的功能? 示例: PHP $str = "Hello World!";
$word = "shshsh.shshsh"; print(rtrim($word, "sh.")); 当我期望它输出整个字符串时,输出是一个空字符串(因为在这种情况下“sh.”没有出现在末尾)。
我在使用 jQuery 的 trim 时遇到了问题。我在 jQuery 中有一个这样的字符串: var string1; string1 = "one~two~"; 如何修剪结尾的波浪号? 最佳答案
本文实例讲述了php中ltrim()、rtrim()与trim()删除字符空格的方法。分享给大家供大家参考。具体分析如下: php中的trim函数不能像asp中的一样,可以自动删除所有空格,PHP
我想从我网站的页面中删除 Search -。下面是我的代码示例: 输入: $search = "Search - echelon"; $trim = "Search - "; $result = lt
不确定我还能在哪里问这个问题...但我正在查看我们系统中的一些代码,并在我们的数据清理过程之一中遇到了这个... UPDATE #X SET Email = CASE
目前我有以下查询: SELECT CASE WHEN ('[Param.3]' = 'SELECTED') THEN (SELECT RTRIM(XMLELE
我只需要在查询的某些部分执行RTRIM(),但如果我执行 TRIM() 将会影响性能。 是Trim()更慢/更快/完全相同(甚至没有可以忽略不计的差异)与 RTRIM() 和 LTRIM() 相比?
我有点惊讶我无法找到一个快速解决方案来解决我遇到的问题,这似乎是一件很常见的事情。我无法摆脱选择查询中的尾随空格。我想将数据放入 csv 文件中。如果这样更容易,我很乐意复制/粘贴 SSMS“结果到文
我对 Oracle 还很陌生。 可以肯定地说LTRIM(RTRIM())完全可以被 TRIM() 取代如果我想替换 Oracle 11g 中的前导和尾随空格? 此外,当我尝试在使用 JPA 的查询中使
我尝试了这段代码 - UPDATE Table SET Name = RTRIM(LTRIM(Name)) Name 的数据类型为 varchar(25) 前导空格和尾随空格都不会被删除。当我复制粘贴
我想将两个包含产品的表按描述放在一起 表 1:[..fields..] [DESCRIPTION1] [..fields..] 表 2:[..fields..] [DESCRIPTION2] [..f
我有一个函数: char* rtrim(char* string, char junk) { char* original = string + strlen(string); whi
你好, 你能给我建议吗,我该如何更换 RTRIM(path,'?') 使用 regexp_replace 或其他函数,可以在 hive 中使用? 非常感谢。 最佳答案 尝试使用 regexp_extr
我是一名优秀的程序员,十分优秀!