小编kun*_*nal的帖子

在pyspark数据帧中处理字符串到数组的转换

我有一个文件(csv),当在spark数据框中读取时,该文件具有以下打印模式值

-- list_values: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)

list_values列中的值类似于:

[[[167, 109, 80, ...]]]
Run Code Online (Sandbox Code Playgroud)

是否可以将其转换为数组类型而不是字符串?

我尝试将其拆分并使用在线提供的代码来解决类似问题:

df_1 = df.select('list_values', split(col("list_values"), ",\s*").alias("list_values"))
Run Code Online (Sandbox Code Playgroud)

但是如果我运行上面的代码,我得到的数组将跳过原始数组中的很多值,即

上面代码的输出是:

[, 109, 80, 69, 5...
Run Code Online (Sandbox Code Playgroud)

这与原始数组不同,即(缺少-167)

[[[167, 109, 80, ...]]] 
Run Code Online (Sandbox Code Playgroud)

由于我是Spark的新手,所以我对它的完成方法并不了解(对于python,我可以完成ast.literal_eval,但是spark没有为此做准备。

因此,我将再次重复这个问题:

如何将存储为字符串的数组转换/转换为arrayie

'[]' to [] conversion
Run Code Online (Sandbox Code Playgroud)

apache-spark apache-spark-sql pyspark

2
推荐指数
1
解决办法
1974
查看次数

标签 统计

apache-spark ×1

apache-spark-sql ×1

pyspark ×1