簡體   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