Sum.txt 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import org.apache.spark.SparkConf
  2. import org.apache.spark.sql.SparkSession
  3. import scala.util.matching.Regex
  4. object sum {
  5. def main(args: Array[String]): Unit = {
  6. System.setProperty("hadoop.home.dir","E:\\Scala\\hadoop-2.6.5")
  7. val ss = SparkSession.builder().appName("sum").master("local[*]").getOrCreate()
  8. val sc = ss.sparkContext
  9. var rdd1 = sc.textFile("./src/main/scala/data/file.txt",1)
  10. var rdd2 = rdd1.map( f => {
  11. var splits = f.split("\\*")
  12. var str1 = new Regex("\\d{1,}")
  13. if (!f.contains("*")){
  14. var str = str1 findFirstIn (f)
  15. var str2 = str.getOrElse(-1).toString().toInt
  16. if(str2 == -1){
  17. f
  18. }else{
  19. str2
  20. }
  21. } else if (f.contains("*")){
  22. if (splits.length == 2) {
  23. var resource1 = (str1 findFirstIn (splits(1))).getOrElse(-1).toString().toInt
  24. if(resource1 == -1){
  25. f
  26. }else{
  27. resource1
  28. }
  29. } else if (splits.length == 3) {
  30. var resource2 = (str1 findFirstIn(splits(1))).getOrElse(-1).toString().toInt
  31. var resource3 = (str1 findFirstIn(splits(2))).getOrElse(-1).toString().toInt
  32. if (f.contains("贴")){
  33. resource3
  34. }else if(resource2 == -1 | resource3 == -1){
  35. f
  36. }else{
  37. var resource4 = resource2 * resource3
  38. resource4
  39. }
  40. }else if(splits.length == 4){
  41. var resource3 = (str1 findFirstIn(splits(2))).getOrElse(-1).toString().toInt
  42. var resource4 = (str1 findFirstIn(splits(3))).getOrElse(-1).toString().toInt
  43. var resource = resource3 * resource4
  44. resource
  45. }else{
  46. f
  47. }
  48. } else {
  49. f
  50. }
  51. })
  52. rdd2.saveAsTextFile("./src/main/scala/data/outPut")
  53. rdd2.foreach(println)
  54. }
  55. }