首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何仅使用Dataset API连接两个数据集

如何仅使用Dataset API连接两个数据集
EN

Stack Overflow用户
提问于 2018-06-20 02:48:10
回答 1查看 504关注 0票数 0

我正在努力扁平化由连接另外两个数据集产生的数据集。下面是我的代码:

代码语言:javascript
运行
复制
  val family = Seq(
      Person(0, "Agata", 0),
      Person(1, "Iweta", 0),
      Person(2, "Patryk", 2),
      Person(3, "Maksym", 0)).toDS
    val cities = Seq(
      City(0, "Warsaw"),
      City(1, "Washington"),
      City(2, "Sopot")).toDS

然后连接:

代码语言:javascript
运行
复制
val joined = family.joinWith(cities, family("cityId") ===cities("id"),"crossjoin")

得到的结果是:

代码语言:javascript
运行
复制
joined: org.apache.spark.sql.Dataset[(Person, City)]
 _1| _2|

[0,Agata,0]|[0,Warsaw]| | 
[1,Iweta,0]|[0,Warsaw]| |
[2,Patryk,2]| [2,Sopot]| |
[3,Maksym,0]|[0,Warsaw] |

我想要展平它,并获得以下数据集:

代码语言:javascript
运行
复制
val output: Dataset= 
[0,Agata,0,Warsaw]|
[1,Iweta,0,Warsaw]|
[2,Patryk,2,Sopot]| 
[3,Maksym,0,Warsaw]

任何想法如何做到这一点不使用dataframe API,我希望它是完全由Dataset API完成。非常感谢你的帮助。诚挚的问候

EN

回答 1

Stack Overflow用户

发布于 2018-06-20 03:16:39

使用join本身,您将获得相同的输出。

代码语言:javascript
运行
复制
family.join(cities, family("cityId")===cities("id")).drop("id")

示例输出:

代码语言:javascript
运行
复制
+--------+------+--------+
|cityName|cityId|cityName|
+--------+------+--------+
|   Agata|     0|  Warsaw|
|   Iweta|     0|  Warsaw|
|  Patryk|     2|   Sopot|
|  Maksym|     0|  Warsaw|
+--------+------+--------+
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50935124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档