Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark translate和regexp\u replace之间的差异_Apache Spark_Apache Spark Sql - Fatal编程技术网

Apache spark translate和regexp\u replace之间的差异

Apache spark translate和regexp\u replace之间的差异,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,Spark SQL中与函数的区别是什么 我想替换字符串、整数值和其他数据类型(如布尔值)中的子字符串 比如说 func("hello","e","a") = "hallo" func(true,true ,false) = false func(112,112,9) = 9 func(112,115,9) = 112 我应该使用哪一种?每一种都有哪些优点/缺点?它们根本不是等价的: translate用于将一个字符表逐字翻译为另一个字符表。它不关心上下文,不使用正则表达式,只考虑手边的字符。

Spark SQL中与函数的区别是什么

我想替换字符串、整数值和其他数据类型(如布尔值)中的子字符串

比如说

func("hello","e","a") = "hallo"
func(true,true ,false) = false
func(112,112,9) = 9
func(112,115,9) = 112

我应该使用哪一种?每一种都有哪些优点/缺点?

它们根本不是等价的:

  • translate
    用于将一个字符表逐字翻译为另一个字符表。它不关心上下文,不使用正则表达式,只考虑手边的字符。根据您提供的示例,唯一适用的情况是单字母替换:

    spark.sql(“选择翻译('hello','e','a'))”.show()
    
    +----------------------+
    |翻译(你好,e,a)|
    +----------------------+
    |哈罗|
    +----------------------+
    
    通常,
    translate
    用于处理无效字符和其他简单的清理任务。它编写简单,运行时开销小:

    spark.sql("SELECT TRANSLATE('ed-ba', 'abcde', '12345')").show()
    
    +------------------------------+
    |translate(ed-ba, abcde, 12345)|
    +------------------------------+
    |                         54-21|
    +------------------------------+
    
  • regexp\u replace
    。这正是它所说的。您可以使用完整的Java regexp机器。如果您想替换字符串中的子字符串,这就是您要查找的子字符串

  • 无适用于替换整数值和其他数据类型,如布尔值。对于这种情况,
    CASE。。。什么时候否则