你好,我在snowflake中有一个数组字段,存储为variant
,当我读取它时,我在pyspark中将它作为String返回。我如何将字符串转换为数组,以便在它上面应用explode?
下面是来自雪花的VARIANT:
在pyspark中,我尝试拆分字段并将其转换为数组,但是当我分解数组时,值不是预期的字符串。它包含双引号,甚至方括号。我希望输出没有引号和方括号,就像Pyspark数组字段在分解操作后会导致的结果一样。
df = df.withColumn("genres", split(col("genres"), ",").cast("array<string>"))
1条答案
按热度按时间zlhcx6iw1#
如果检查数据类型Map(从Snowflake到Spark),您会看到VARIANT数据类型Map到StringType:
https://docs.snowflake.com/en/user-guide/spark-connector-use.html#from-snowflake-to-spark-sql
这就是为什么你会有那些引号和方括号。我认为解决办法是在查询表时显式地使用ARRAY_TO_STRING将变量转换为字符串,然后在Spark中将字符串转换为数组:
在我的测试中,它返回以下输出: