将RDD [String,String]转换为RDD [Int,Int]

时间:2016-07-17 15:44:32

标签: apache-spark-sql

我是新手,发现了如何转换RDD元素数据类型的问题。我有以下文本文件:

1 2
2 3
3 4

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

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

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

错误“错误:未找到:输入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

答案 1 :(得分:0)

#include <Arduino.h>
#include "HC05.h"
#include <SoftwareSerial.h>

HC05 btSerial = HC05(A2, A5, A3, A4);  // cmd, state, rx, tx

void setup()
{
  DEBUG_BEGIN(57600);
  btSerial.findBaud();
}

void loop()
{
  btSerial.println("Echo Server- type something");
  while (btSerial.connected())
  {
    if (btSerial.available())
    {
      btSerial.write(btSerial.read());
    }
  }
}

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