Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.93 KB | None | 0 0
  1. package ru.atconsulting.study
  2.  
  3. import java.io.PrintWriter
  4.  
  5. import org.apache.hadoop.conf.Configuration
  6. import org.apache.hadoop.fs.FileSystem
  7. import org.apache.spark.rdd.RDD
  8. import org.apache.spark.{SparkConf, SparkContext}
  9. import org.scalatest.{BeforeAndAfterAll, FunSuite}
  10.  
  11. import scala.collection.mutable.MutableList
  12.  
  13. /**
  14.   * Created by glushchik on 16.02.2017.
  15.   */
  16. class TestBase extends FunSuite with BeforeAndAfterAll {
  17.   private var sparkConf: SparkConf = _
  18.   private var sc: SparkContext = _
  19.  
  20.   override protected def beforeAll(): Unit = {
  21.     sparkConf = new SparkConf()
  22.       .setAppName("spark-test-app")
  23.       .setMaster("local")
  24.     sc = new SparkContext(sparkConf)
  25.     val conf = new Configuration()
  26.     val fs = FileSystem.get(conf)
  27.   }
  28.  
  29.   test("spark-test") {
  30.     val file = sc.textFile("hosts.txt")
  31.     val com = file.filter(s => s.contains(".com"))
  32.     val result = countLetters(com)
  33.     //    result.saveAsTextFile("output") - не работает
  34.     // предполагаю из-за того, что у меня не подходящая файловая система
  35.  
  36.     val writer = new PrintWriter("output.txt")
  37.     // так получаются иероглифы
  38. //    result.collect().toList.foreach(s => {
  39. //      writer.write(s+", ")
  40. //    })
  41.     //Так работает, но получается без разделителей
  42.     // Как записать в файл с разделителями(, или \n)?
  43.     result.collect().toList.foreach(writer.write)
  44.     writer.close()
  45.   }
  46.  
  47.   def countLetters(rdd: RDD[String]): RDD[String] = {
  48.     val temp = rdd.collect().toList
  49.     var result: MutableList[String] = MutableList()
  50.     for (letter <- 97 to 122) {
  51.       val letterCount = temp.count(s => s.contains(letter.toChar))
  52.       result += letter.toChar + ":" + letterCount
  53.     }
  54.     sc.makeRDD(result)
  55.   }
  56.  
  57.   override def afterAll(): Unit = {
  58.     sc.stop()
  59.   }
  60.  
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement