解决:Spark使非唯一字段按出现顺序具有ID

茶乐

我有一堆CSV文件,我读这些文件可以触发火花(与pyspark一起使用),在我想将它们在特定字段上加入一个大表之后。

问题是,此字段不是唯一的,但相关的属性是唯一的。数据的来源是唯一的,但是在我将其作为csv之前,这些信息已被删除。我无法使用联接查询的附加属性说明文件之间的连接。但是所有文件中出现的顺序都说明了结构。因此,如果我可以使人造ID具有文件中的ID和出现次数,它将起作用。

我的问题是,我可以定义一个SparkSQL查询(或其他pyspark方法),通过它为每个文件中的非唯一行添加连续计数,以便可以将其用于联接吗?

我想要的是:

ID| ct(ID) | generated_number
A | 2      | 1 
A | 2      | 2
A | 2      | 3
B | 1      | 1
C | 2      | 1
C | 2      | 2
D | 1      | 1
E | 3      | 1
E | 3      | 2
E | 3      | 3

基于这一点,我可以创建一个新的ID,例如conc(ID,'_',generate_number)-至少我会对具有非唯一性的行进行处理。

是否有一个聪明的SparkNative版本,我真的不想在Shell脚本中修改源数据(我想这很糟糕)

非常感谢

解:

这两个答案都适合解决方案,非常感谢。我现在的方法如下:

SELECT  ID,
   row_number() OVER (
        PARTITION BY ID
        ORDER BY ID ) as row_count,
   count(ID) OVER (
        PARTITION BY ID
         ORDER BY ID ) as count
FROM TB_TEMP AS main
WHERE cellname_s = "A"

好吧,不要使用WHERE子句,但是为了显示它,它更容易;)

这给了我想要的输出:

+----------+---------+-----+
|        ID|row_count|count|
+----------+---------+-----+
|         A|        1|    4|
|         A|        2|    4|
|         A|        3|    4|
|         A|        4|    4|
+----------+---------+-----+

要获取我的唯一ID,我将

CASE WHEN count > 1 THEN concact(ID, "_", row_count) ELSE ID END AS ID

因此,为我提供了我没有但没有操纵过的唯一字段,这对处理数据的人员来说更好。

阿迪

我认为您在这里要求一个row_number

使用类似

 select id,CT(id),row_number() over(partition by id,CT(id) order  by id) from ** your ** table

如果希望在Dataframe中使用它,则可以使用:

https://databricks.com/blog/2015/07/15/introducing-window-functions-in-spark-sql.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查找具有唯一字段的文档

来自分类Dev

Django:具有唯一字段的UpdateView

来自分类Dev

MongoDB 排序顺序和唯一字段

来自分类Dev

使用反射来验证特征的所有实例具有唯一字段

来自分类Dev

流星查询所有具有唯一字段的文档

来自分类Dev

当mongo db 11000没有唯一字段定义时,将出现错误

来自分类Dev

当mongo db 11000没有唯一字段定义时,将出现错误

来自分类Dev

Laravel验证服务具有唯一字段

来自分类Dev

如何将具有唯一字段的对象添加到Set

来自分类Dev

Django查询具有唯一字段的项目

来自分类Dev

获取具有唯一字段的最新记录

来自分类Dev

T-SQL返回具有唯一字段的行

来自分类Dev

在具有唯一字段的PostgreSQL查询中返回前X条记录

来自分类Dev

使用Active Record检索具有唯一字段的记录

来自分类Dev

猫鼬模式:使数组内的对象具有文档的唯一字段

来自分类Dev

使用ModelForm在Django中更新具有唯一字段的模型

来自分类Dev

Django查询具有唯一字段的项目

来自分类Dev

Orchard 1.8-具有唯一字段的保存记录

来自分类Dev

Django在具有数据的模型之间迁移唯一字段

来自分类Dev

如何将具有唯一字段的对象添加到Set

来自分类Dev

计算具有唯一字段值的记录

来自分类Dev

唯一字段列表

来自分类Dev

在同一字段上具有多个

来自分类Dev

当插入具有多个唯一字段的表时,我怎么知道哪些字段导致IntegrityError?

来自分类Dev

当插入具有多个唯一字段的表时,我怎么知道哪些字段导致IntegrityError?

来自分类Dev

在PowerShell中将非唯一值与唯一字段并置

来自分类Dev

如何用PHP在MySql中标识具有所有唯一字段值的行?

来自分类Dev

如何选择按不同字段排序的唯一字段?

来自分类Dev

唯一与非唯一聚集索引可加快对非唯一字段的搜索

Related 相关文章

  1. 1

    查找具有唯一字段的文档

  2. 2

    Django:具有唯一字段的UpdateView

  3. 3

    MongoDB 排序顺序和唯一字段

  4. 4

    使用反射来验证特征的所有实例具有唯一字段

  5. 5

    流星查询所有具有唯一字段的文档

  6. 6

    当mongo db 11000没有唯一字段定义时,将出现错误

  7. 7

    当mongo db 11000没有唯一字段定义时,将出现错误

  8. 8

    Laravel验证服务具有唯一字段

  9. 9

    如何将具有唯一字段的对象添加到Set

  10. 10

    Django查询具有唯一字段的项目

  11. 11

    获取具有唯一字段的最新记录

  12. 12

    T-SQL返回具有唯一字段的行

  13. 13

    在具有唯一字段的PostgreSQL查询中返回前X条记录

  14. 14

    使用Active Record检索具有唯一字段的记录

  15. 15

    猫鼬模式:使数组内的对象具有文档的唯一字段

  16. 16

    使用ModelForm在Django中更新具有唯一字段的模型

  17. 17

    Django查询具有唯一字段的项目

  18. 18

    Orchard 1.8-具有唯一字段的保存记录

  19. 19

    Django在具有数据的模型之间迁移唯一字段

  20. 20

    如何将具有唯一字段的对象添加到Set

  21. 21

    计算具有唯一字段值的记录

  22. 22

    唯一字段列表

  23. 23

    在同一字段上具有多个

  24. 24

    当插入具有多个唯一字段的表时,我怎么知道哪些字段导致IntegrityError?

  25. 25

    当插入具有多个唯一字段的表时,我怎么知道哪些字段导致IntegrityError?

  26. 26

    在PowerShell中将非唯一值与唯一字段并置

  27. 27

    如何用PHP在MySql中标识具有所有唯一字段值的行?

  28. 28

    如何选择按不同字段排序的唯一字段?

  29. 29

    唯一与非唯一聚集索引可加快对非唯一字段的搜索

热门标签

归档