【问题标题】:convert RDD[String,String] to RDD[Int,Int]将 RDD[String,String] 转换为 RDD[Int,Int]
【发布时间】:2016-07-17 15:44:31
【问题描述】:

我是 spark 新手,在寻找如何转换 RDD 元素数据类型时遇到问题。我有以下文本文件:

1 2
2 3
3 4

当我创建一个新的 RDD 时,它默认采用 String 数据类型

val exampleRDD  = sc.textFile("example.txt").map(x => (x.split(" ")(0),x.split(" ")(1))) 
exampleRDD: org.apache.spark.rdd.RDD[(String, String)] = MapPartitionsRDD[5] at map at <console>:27

但我希望它是 RDD[(Int, Int)]。我试过了

val exampleRDD: RDD[(Int,Int)) =sc.textFile("example.txt").map(x => (x.split(" ")(0),x.split(" ")(1)))

但它给出了错误

错误:未找到:类型 RDD

任何帮助将不胜感激。

【问题讨论】:

    标签: apache-spark-sql


    【解决方案1】:

    错误“错误:未找到:类型 RDD”是因为,您需要完整的类名称为 org.apache.spark.rdd.RDD。

    但这仍然不能解决问题。要返回 Int,您必须将字符串转换为 Int。

        val exampleRDD  = sc.textFile("example.txt").map(x => (x.split(" ")(0).toInt,x.split(" ")(1).toInt)) 
    

    结果: exampleRDD: org.apache.spark.rdd.RDD[(Int, Int)] = MapPartitionsRDD[36] at map at :34

    【讨论】:

      【解决方案2】:
      sc.textFile("two.txt").map(_.split(" ")).map(ar => (ar(0).toInt, ar(1).toInt))
      

      如果你有更复杂的格式,使用 spark-csv 是更好的选择来解析数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-26
        • 2015-12-11
        • 2018-05-15
        • 2021-09-28
        • 1970-01-01
        • 2018-07-06
        • 2021-02-26
        相关资源
        最近更新 更多