将类似“ [1、2、3]”的字符串转换为数组

时间:2019-02-24 07:11:18

标签: pyspark apache-spark-sql pyspark-sql apache-spark-2.3

非常简单。我有一个编码为字符串(getSound)的类似数组的列,并想将其强制转换为arguments[0](这样我就可以varchar对其进行处理,并以“长”格式操作元素)

两种最自然的方法似乎无效:

array

得到我想要的东西的丑陋/模糊/ circuit回的方式是:

explode

({-- just returns a length-1 array with a single string element '[1, 2, 3]' select array('[1, 2, 3]') -- errors: DataType array is not supported. select cast('[1, 2, 3]' as array) 可以包含两个select explode(split(replace(replace('[1, 2, 3]', '['), ']'), ', ')) -- '1' -- '2' -- '3' ,但带有方括号的正则表达式总是很麻烦;也可以使用regexp_replacereplaceltrim

有没有更简洁的方法可以解决这个问题?我正在使用Spark 2.3.1。

1 个答案:

答案 0 :(得分:-1)

我在这里假设元素是数字。但是你知道了

BaseException