繁体   English   中英

在Apache Spark中从其他列创建地图列

[英]Create a map column in Apache Spark from other columns

我进行了相当多的搜索,但找不到任何可以适应我的情况的信息。 我有一个像这样的数据框:

+-----------------+---------------+
|             keys|         values|
+-----------------+---------------+
|[one, two, three]|[101, 202, 303]|
+-----------------+---------------+

键有一个字符串数组,值有一个整数数组。

我想创建一个新列,其中包含一个键到值的映射,如下所示:

+-----------------+---------------+---------------------------+
|             keys|         values|                        map|
+-----------------+---------------+---------------------------+
|[one, two, three]|[101, 202, 303]|Map(one->101, two->202, etc|
+-----------------+---------------+---------------------------+

我一直在研究此问题,但不确定是否可以将其用作我的情况的起点: Spark DataFrame列转换为Map类型和Map类型列表

我在斯卡拉需要这个。

谢谢!

您可以创建与链接的问题类似的udf:

 val toMap = udf((keys: Seq[String], values: Seq[Int]) => {
    keys.zip(values).toMap
  })

并将其用作:

df.withColumn("map", toMap($"keys", $"values"))

从Spark 2.4开始,有一个内置版本def map_from_arrays(keys: Column, values: Column): Column org.apache.spark.sql.functions def map_from_arrays(keys: Column, values: Column): Column

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM