【发布时间】:2022-08-02 17:00:07
【问题描述】:
我正在尝试从 ScyllaDB 读取数据并希望从列中删除 \\n 和 \\r 字符。问题是这些字符作为字符串存储在正在读取的表的列中,我需要使用 REGEX_REPLACE,因为我正在为此使用 Spark SQL。正则表达式模式在 MySQL 中似乎不起作用。字符串变为空白,但不会删除字符。下面是 Spark SQL 中使用的查询的 sn-p。帮助表示赞赏。
消息列中存在以下字符串:\'hello\\nworld\\r\'
预期的输出是 \'hello world\'
df=spark.sql(\"select REGEXP_REPLACE(message,\'\\n|\\r|\\r\\n\',\' \') as replaced_message from delivery_sms\")
-
如果您实际上是在尝试替换字符串
\\n或\\r,则需要转义斜杠 -regexp_replace(message, \'\\\\n|\\\\r, \' \') -
@Andrew,它不适用于 pyspark sql,但它适用于 mysql 查询。您能否建议我可以应用的任何其他方式(另一个功能)会有所帮助
-
我还提到了链接stackoverflow.com/questions/56371701/… 我尝试使用从 scyllaDB 读取的数据框,但它不适用于该数据框。但是当我尝试与链接中给出的相同示例时,它可以工作。如果可以请告诉我是什么原因
-
嗯,这很奇怪。我也不能让它在 spark sql 中工作。不过,您可以在数据框上使用 regexp_replace 和 withColumn 来完成。您必须为每个使用 4 个斜杠 -
df.withColumn(\"test\",regexp_replace(\"_c0\",\"\\\\\\\\n|\\\\\\\\r\",\" \")).show()。
标签: pyspark apache-spark-sql scylla