【问题标题】:Scala RDD[String] to RDD[String,String]Scala RDD[String] 到 RDD[String,String]
【发布时间】:2017-02-17 01:39:10
【问题描述】:

我有一个RDD[String],其中包含以下数据:

数据格式:('Movie Name','Actress Name')

('Night of the Demons (2009)  (uncredited)', '"Steff", Stefanie Oxmann Mcgaha')
('The Bad Lieutenant: Port of Call - New Orleans (2009)  (uncredited)', '"Steff", Stefanie Oxmann Mcgaha') 
('"Please Like Me" (2013) {All You Can Eat (#1.4)}', '$haniqua') 
('"Please Like Me" (2013) {French Toast (#1.2)}', '$haniqua') 
('"Please Like Me" (2013) {Horrible Sandwiches (#1.6)}', '$haniqua')

我想将此转换为RDD[String,String],例如' ' 中的第一个元素将是我在RDD 中的第一个字符串,' ' 中的第二个元素将是我在RDD 中的第二个字符串。

我试过这个:

val rdd1 = sc.textFile("/home/user1/Documents/TestingScala/actress"
val splitRdd = rdd1.map( line => line.split(",") )
splitRdd.foreach(println)

但它给了我一个错误:

[Ljava.lang.String;@7741fb9
[Ljava.lang.String;@225f63a5
[Ljava.lang.String;@63640bc4
[Ljava.lang.String;@1354c1de

【问题讨论】:

  • 这不是错误消息,这是一堆字符串的对象ID。
  • @Malvolio 你能告诉我如何消除该错误
  • 根据split 的结果致电toList

标签: scala dictionary apache-spark rdd scala-collections


【解决方案1】:

[Ljava.lang.String;@7741fb9 不是错误,这是打印出来的 wt 当您尝试打印数组时。

[ - 一维数组

L - 数组包含一个类或接口

java.lang.String - 数组中对象的类型

@ - 将字符串连接在一起

7741fb9 对象的哈希码。

要打印String array,你可以试试这个代码:

import scala.runtime.ScalaRunTime._
splitRdd.foreach(array => println(stringOf(array)))

Source

【讨论】:

    【解决方案2】:

    这不是错误。我们也可以在这里使用 flatMap() 来避免混淆,

    val rdd1 = sc.textFile("/home/user1/Documents/TestingScala/actress"
    rdd1.flatMap( line => line.split(",")).foreach(println)
    

    这里,map 的输入函数返回单个元素(数组),而 flatMap 返回元素列表(0 或更多)。此外,flatMap 的输出也被展平了。

    【讨论】:

      【解决方案3】:

      由于是字段封闭&行封闭的csv文件,需要使用正则表达式读取文件。简单的拆分不起作用。

      【讨论】:

        【解决方案4】:

        试试这个把RDD[String]转换成RDD[String,String]

        val rdd1 = sc.textFile("/home/user1/Documents/TestingScala/actress"
        val splitRdd = rdd1.map( line => (line.split(",")(0), line.split(",")(1)) )
        

        以上行将 rdd 作为键、值对 [Tuple] RDD 返回。

        【讨论】:

          猜你喜欢
          • 2021-10-16
          • 2021-09-28
          • 1970-01-01
          • 2020-08-17
          • 1970-01-01
          • 1970-01-01
          • 2015-12-11
          • 2018-07-06
          • 1970-01-01
          相关资源
          最近更新 更多