带句点 (.) 的 Spark SQL 拆分

som*_*ser 2 pyspark-sql

我在使用 pyspark sql 时在 spark 2.2 中遇到了一个问题,我尝试用句点 (.) 拆分列,即使在提供转义字符后它也表现不佳:

>>> spark.sql("select split('a.aaa','.')").show()
+---------------+
|split(a.aaa, .)|
+---------------+
|   [, , , , , ]|
+---------------+

>>> spark.sql("select split('a.aaa','\\.')").show()
+---------------+
|split(a.aaa, .)|
+---------------+
|   [, , , , , ]|
+---------------+

>>> spark.sql("select split('a.aaa','[.]')").show()
+-----------------+
|split(a.aaa, [.])|
+-----------------+
|         [a, aaa]|
+-----------------+
Run Code Online (Sandbox Code Playgroud)

它仅在我们像 [.] 这样提供它时才使用句点,同时它也应该与转义序列 '\.' 一起使用。我在这里做错了吗?

Sil*_*vio 7

看起来你需要逃避\\:

spark.sql("""select split('a.aa', '\\\\.')""").show()
Run Code Online (Sandbox Code Playgroud)

如果你直接在 SparkSQL 中运行它,那就是

select split('a.aa', '\\.')
Run Code Online (Sandbox Code Playgroud)