Это мой текстовый файл, входящий в программу:
Id Title Copy
B2002010 gyh 1
D2001001 abc 12
M2003005 zxc 3
D2002003 qwe 13
M2001002 efg 1
D2001004 asd 6
D2003005 zxc 3
M2001006 wer 6
D2001006 wer 6
B2004008 sxc 10
D2002007 sdf 9
D2004008 sxc 10
ID отформатирован как Xyyyyrrr, где:
- X - это B => Книга или M => Журнал
- гггг это год
- ррр - случайное число
Что мне нужно сделать, так это то, что первую букву нужно заменить на слово.
Например:
(D2002,24) --> Dictionary,2002,24
Мой проект Spark находится на Eclipse, и я использую Maven и Scala IDE l.
package bd.spark_app
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.sql.SQLContext
import org.apache.spark.sql._
import org.apache.spark.sql.types.IntegerType
import scala.io.Source
import org.apache.spark.sql.functions._
import scala.collection.mutable.WrappedArray
import org.apache.log4j._
import org.apache.spark.sql.types.{StructType, StructField, StringType}
import org.apache.spark.sql.Row
import scala.Array
object alla { def main(args:Array[String]) = {
val conf =newSparkConf().setMaster("local")
.setAppName("trying ")
val sc = new SparkContext(conf)
val x =
sc.textFile("/home/hadoopusr/sampledata")
val converted = x.map(_.split(" ")).map(r =>
(r(0).dropRight(3), r(2).toInt)) val result =
converted.reduceByKey(_ + _)
sc.stop() } }
Результат
(M2001,7) (D2001,24) (M2003,3) (D2003,3) (D2002,22) (D2004,10) (B2002,1) (B2004,10)
Я бы хотел, чтобы результат был
(Magazine, 2001 ,7)
(Dictionary, 2001, 24)
(Magazine ,2003, 3)
(Dictionary, 2003, 3).
и т. Д.
Простая функция поможет.