【问题标题】:Find out the position of the line in file using spark使用 spark 找出文件中行的位置
【发布时间】:2020-10-10 20:12:31
【问题描述】:

我有一个如下的序列:

 val data = Seq("banagalore",
    "Delhi.","","","","Mubmai","Kolkata","Jammu$Kashmir")
  val rddData = ss.sparkContext.parallelize(data,3)
  val output = rddData.flatMap(_.split(" "))

所以,我的要求是打印 blelow O/P 1.(单词,单词在序列中的位置,序列中的字符个数)

Eg:For Mumbai it will print("Mumbai",5,6)

5=Mumbai 这个词在序列中的位置 6=单词“Mumbai”中的字符数

Also,

    O/p 2:Also I have to find out below:

        (word,Position of the word in the  sequence, Word with Maximum elements)
        (word,Position of the word in the  sequence,  Word with Minimum  characters

【问题讨论】:

  • 不确定 9 来自哪里
  • 嗨 @Elinda 对不起,不是 9。它是 5。5 位孟买字在序列中的位置和 6=“孟买字”中的字符数

标签: scala dataframe apache-spark rdd


【解决方案1】:

您可以使用 zipWithIndex 方法给出项目在 RDD 中的位置。您可以在设置 zipWithIndex 后对您需要的过滤器应用过滤器,您将得到您想要的

 val data = Seq("banagalore",
    "Delhi.","","","","Mubmai","Kolkata","Jammu$Kashmir")
  val rddData = spark.sparkContext.parallelize(data,3)

val a = rddData.zipWithIndex.map(a => (a._1, a._2, a._1.length())).filter(v => v._1 == "Mubmai").take(2)

println(a(0))

输出将是

(Mubmai,5,6)

我正在使用 take(2) 来捕获 RDD 的前两行,但由于只有一个(因为我在 Mubmai 上过滤)它只打印一个(这就是我正在执行 println(a(0 ))。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 2018-06-24
    • 1970-01-01
    相关资源
    最近更新 更多