我必须对spark数据集应用一些限制,并且必须创建spark数据集的子集,并且需要从该数据集中提取一行。我通过使用,除了和限制数据集的功能来实现这个逻辑。这里的问题是当我使用时,除了数据集的顺序已被更改。对于我的逻辑,保留订单是imp。
EG。我的数据集是:数据集有3行
巧克力 冰淇淋 软饮料
我想要获取冰淇淋,当我申请限制时,除了我得到我的子集
软饮料 冰淇淋
它将为我提供SoftDrinks(将子集转换为Java列表并将获取列表的第一个元素)
或者有没有办法通过只传递索引来获取数据集中的行?像 dataset.get(0)
答案 0 :(得分:0)
一般情况下,您无法使用expcept
保留订单,因为这是一项需要随机播放的操作。在某些情况下(小参考),您可以使用broadacst join或bloom过滤器来实现类似的效果。
然而,在排序方面考虑Datasets
,除非用orderBy
明确强制执行命令,这是一个巨大的错误。一般来说,Dataset
与关系一样,是无序的。所以,如果
对于我的逻辑,保留订单是imp。
你正在寻找一个错误的工具。
相同的:
通过仅传递索引??
来获取数据集中的行
是不可能的,因为Dataset
没有索引概念。