Spark with Scala

SparkSession

//Scala
Logger.getLogger("org.apache.spark").setLevel(Level.WARN)

val spark = SparkSession
.builder()
.appName("SparkSession")
.master("local")
.getOrCreate()

从磁盘(File)中创建RDD - textFile

val lines :RDD[String] = sc.textFile("./data/words")
val result :RDD[String]= sc.parallelize(Array[String]("a","b","c"))

val result: RDD[(String, Int)] = sc.makeRDD(Array[(String, Int)](
      ("a", 10),
      ("b", 20),
      ("c", 30)
    ))

val result: RDD[Int] = sc.makeRDD(Array[Int](1,2,3,4,5,6))

查看RDD内容

myRDD.collect().foreach(println)
myRDD.take(n).foreach(println)  //取n个

RDD内容操作

//去重
.distinct()
//转换dataframe
import sparkContext.implicits._
.toDF()

DataFrame内容操作

Spark-Dataframe操作 - 会走的树 - 博客园

知识点

  • SparkSession vs. SparkConf & SparkContext

Spark:你还没用SparkSession吗?已经out了-Spark-About云开发 - Powered by Discuz!

  • GroupByKey vs. ReduceByKey

Spark经典案例2-数据去重_yjgithub的博客-CSDN博客_spark 去重

  • CSV文件读取 (RDD或DF)

Spark1.x和2.x如何读取和写入csv文件_lzw2016的博客-CSDN博客_spark写入csv文件

  • Spark转义字符

关于点的问题是用string.split("[.]") 解决。
关于竖线的问题用 string.split("\\|")解决。
关于星号的问题用 string.split("\\*")解决。
关于斜线的问题用 sring.split("\\\\")解决。
关于中括号的问题用 sring.split("\\[\\]")解决。

sparksql特殊字符转义处理_帮我消消黑眼圈!的博客-CSDN博客_spark 转义

  • 设置输出日志等级

//只针对sparkContext

import org.apache.log4j.{ Level, Logger }

Logger.getLogger("org").setLevel(Level.WARN)

Logger.getLogger("org.apache.spark").setLevel(Level.WARN)

Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.WARN)

spark.sparkContext.setLogLevel("WARN")

Spark日志,及设置日志输出级别_爱是与世界平行的博客-CSDN博客_spark日志级别

  • Maven打包 Spark项目

pom.xml添加插件


    
        
            org.scala-tools
            maven-scala-plugin
            2.15.2
    
        
            scala-compile-first
            
                compile
            
            
                
                    **/*.scala
                
            
        
        
            scala-test-compile
            
                testCompile
            
        
    




    org.apache.maven.plugins
    maven-jar-plugin
    
        
            
                true
                lib/
                你的主类全路径(com.xxx.Xxx)
            
        
    



Maven打包Scala项目 - 简书

踩坑问题汇总  (spark, scala等 版本匹配后可解决大多数问题)

  • NoSuchMethodError:io.netty.buffer.PooledByteBufAllocator.metric()

项目可能会引入大量的依赖包,依赖包之间可能就会发生冲突

Spark2.3 - 运行异常NoSuchMethodError:io.netty.buffer.PooledByteBufAllocator.metric()_寒沧的博客-CSDN博客


    
        
          io.netty
          netty-handler
        
        
          io.netty
          netty-transport-native-epoll
        
    
  • Scala module 2.12.0 requires Jackson Databind version >= 2.12.0 and < 2.13.0

jackson多版本题。需要屏蔽所有hadoop 组件中的Jackson,升级pom中的jackson


org.apache.hadoop
hadoop-common
3.1.1


commons-lang3
org.apache.commons


com.fasterxml.jackson.module
*


com.fasterxml.jackson.core
*



 

com.fasterxml.jackson.core
jackson-annotations
2.12.3

Spark2.X 升级spark3.X 遇到的问题_weixin_43181992的博客-CSDN博客

  • Spark提交时报Error: Failed to load class的解决方法

检查target/classes下是否包含class文件,如果没有可能需要添加插件到pom

spark-submit --class 运行类 target/project.jar

项目实战

Spark实现在一定时间范围内 求用户在所有基站(lac)停留的时长 再取top2_涤生(bluez)的博客-CSDN博客

你可能感兴趣的:(大数据,spark,scala,maven,大数据,intellij-idea)