如何在Spark TextFile函数中使用自定义换行符?

登录

我的文件中包含以下数据:

用户:测试

评论:测试

参考:Test1 Test2 Test3

#####

用户:Test1

如何:Test1

参考:Test2 Test3 Test4

...

现在,我想检查一下,哪个用户引用的内容最多。这意味着“用户”和“参考”之间必须存在关联。使用以下代码时,每一行成为RDD中的一个元素:

elements = sc.textFile(path_to_file)

在这一点上,不再可能使用诸如map()之类的函数在“用户”和“引用”值之间建立关联,因为RDD的元素是独立对待的。

是否可以告诉textFile()函数使用自定义分隔符,而不是换行符?(在上述情况下为5#)

还有其他解决方案吗?

面包

您可以尝试这种方法。读为rdd,过滤出空白行和5#分隔符,然后添加索引进行分组,转换为DF,groupBy,并且用户和引用位于一行中。

  import spark.implicits._
  import org.apache.spark.sql.functions._

  val r1 = spark.sparkContext.textFile("data/splithash.txt")
  val rdd = r1.filter(!_.trim().equals(""))
    .filter(!_.equals("#####"))
    .zipWithIndex()
    .map(s => (s._1, Math.ceil(s._2/3).toInt))

  val df = rdd.toDF()
  df.show()

  df.groupBy('_2).agg(collect_list('_1)).show(false)
    +--------------------+---+
    |                  _1| _2|
    +--------------------+---+
    |          User: Test|  0|
    |       Comment: Test|  0|
    |References: Test1...|  0|
    |         User: Test1|  1|
    |      Comment: Test1|  1|
    |References: Test2...|  1|
    +--------------------+---+

    +---+------------------------------------------------------------+
    |_2 |collect_list(_1)                                            |
    +---+------------------------------------------------------------+
    |1  |[User: Test1, Comment: Test1, References: Test2 Test3 Test4]|
    |0  |[User: Test, Comment: Test, References: Test1 Test2 Test3]  |
    +---+------------------------------------------------------------+
import pyspark.sql.functions as f
import math

r1 = spark.sparkContext.textFile("ok.txt")
rdd = r1.filter(lambda x: x.strip() != '') \
    .filter(lambda x: x != '#####') \
    .zipWithIndex() \
    .map(lambda x: (x[0], math.floor(x[1] / 3)))

rdd.foreach(lambda x: print(x))

df = rdd.toDF()
df.show()


df.groupBy(f.col('_2')).agg(f.collect_list(f.col('_1'))).show(truncate=False)
+--------------------+---+
|                  _1| _2|
+--------------------+---+
|          User: Test|  0|
|       Comment: Test|  0|
|References: Test1...|  0|
|         User: Test1|  1|
|      Comment: Test1|  1|
|References: Test2...|  1|
+--------------------+---+

+---+------------------------------------------------------------+
|_2 |collect_list(_1)                                            |
+---+------------------------------------------------------------+
|0  |[User: Test, Comment: Test, References: Test1 Test2 Test3]  |
|1  |[User: Test1, Comment: Test1, References: Test2 Test3 Test4]|
+---+------------------------------------------------------------+

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Inno Setup如何在自定义消息中添加CRLF /换行符

来自分类Dev

Inno Setup如何在自定义消息中添加CRLF /换行符

来自分类Dev

如何在自定义jQuery函数中使用函数

来自分类Dev

如何从自定义mbean在ADF中的错误消息中插入换行符

来自分类Dev

Laravel:如何避免自定义分页中出现换行符?

来自分类Dev

如何在Excel 2013中的图表Y轴自定义标签中插入换行符?

来自分类Dev

如何在苗条变量中使用换行符?

来自分类Dev

如何在Django模板中使用换行符

来自分类Dev

如何在苗条变量中使用换行符?

来自分类Dev

如何在Python中使用换行符?

来自分类Dev

如何在带空格的变量中使用换行符

来自分类Dev

如何在此代码中使用自定义函数?

来自分类Dev

如何在自定义jquery函数中使用this的值以使函数输出数据

来自分类Dev

如何在dplyr%>%运算符之后使用自定义函数?

来自分类Dev

如何在Gnu sed中使用a和i命令使用\ n添加换行符?

来自分类Dev

如何在换行符中使用python -c“在此编码”?

来自分类Dev

如何在AngularJS的GridList(动态磁贴)中使用换行符

来自分类Dev

如何在VBA中使用RegEx进行多行任何字符匹配,包括换行符

来自分类Dev

如何在jupyter中使用%% writefile -a命令在文件中添加换行符?

来自分类Dev

如何在C#正则表达式中使用lookbehind以删除换行符?

来自分类Dev

如何在文本/纯servlet响应中使用换行符

来自分类Dev

如何在eyeD3中使用换行符

来自分类Dev

如何在带有换行符的文本中使用Expect?

来自分类Dev

如何在Django模板中使用换行符从数据库输出文本?

来自分类Dev

如何在eyeD3中使用换行符

来自分类Dev

如何在 FOR /F 的带引号的字符串中使用换行符

来自分类Dev

如何在tcl中使用换行符剪切和发布?

来自分类Dev

如何在C ++中使用带有自定义排序成员函数的sort()?

来自分类Dev

如何在BTreeSet中使用自定义比较器函数?

Related 相关文章

  1. 1

    Inno Setup如何在自定义消息中添加CRLF /换行符

  2. 2

    Inno Setup如何在自定义消息中添加CRLF /换行符

  3. 3

    如何在自定义jQuery函数中使用函数

  4. 4

    如何从自定义mbean在ADF中的错误消息中插入换行符

  5. 5

    Laravel:如何避免自定义分页中出现换行符?

  6. 6

    如何在Excel 2013中的图表Y轴自定义标签中插入换行符?

  7. 7

    如何在苗条变量中使用换行符?

  8. 8

    如何在Django模板中使用换行符

  9. 9

    如何在苗条变量中使用换行符?

  10. 10

    如何在Python中使用换行符?

  11. 11

    如何在带空格的变量中使用换行符

  12. 12

    如何在此代码中使用自定义函数?

  13. 13

    如何在自定义jquery函数中使用this的值以使函数输出数据

  14. 14

    如何在dplyr%>%运算符之后使用自定义函数?

  15. 15

    如何在Gnu sed中使用a和i命令使用\ n添加换行符?

  16. 16

    如何在换行符中使用python -c“在此编码”?

  17. 17

    如何在AngularJS的GridList(动态磁贴)中使用换行符

  18. 18

    如何在VBA中使用RegEx进行多行任何字符匹配,包括换行符

  19. 19

    如何在jupyter中使用%% writefile -a命令在文件中添加换行符?

  20. 20

    如何在C#正则表达式中使用lookbehind以删除换行符?

  21. 21

    如何在文本/纯servlet响应中使用换行符

  22. 22

    如何在eyeD3中使用换行符

  23. 23

    如何在带有换行符的文本中使用Expect?

  24. 24

    如何在Django模板中使用换行符从数据库输出文本?

  25. 25

    如何在eyeD3中使用换行符

  26. 26

    如何在 FOR /F 的带引号的字符串中使用换行符

  27. 27

    如何在tcl中使用换行符剪切和发布?

  28. 28

    如何在C ++中使用带有自定义排序成员函数的sort()?

  29. 29

    如何在BTreeSet中使用自定义比较器函数?

热门标签

归档