Spark

刘超 18天前 ⋅ 6114 阅读   编辑

一、介绍

  1、Spark中的RDD到底是什么

  2、组件介绍

二、疑问
  1、spark join操作为啥生成3个RDD

二、版本

  1) spark1.x与2.x对比
  2) spark存在多版本时激活某版本

  3) spark与Scala 有版本对应关系
  4) spark升级
  5) spark 3.0 动态分区裁剪(Dynamic Partition Pruning)是什么

  

三、Spark命令行

  1、spark-submit命令
  -- 语法
  -- 选项
  -- 需求(log日志、jdk、jvmoption、类)
  -- 示例(以特定用户提交任务等)
  2、spark-shell命令
  -- 语法
  -- 选项
  -- 命令
  c、spark-sql

四、Spark程序(经验总结

  -- 解决Spark Application jar包冲突

  -- 指定第三方依赖

  1、Spark-Core

    a、Spark RDD算子

  2、Spark-SQL

    a、Dataframe使用

    b、表/View使用

    c、SparkSQL语句

    d、SparkSQL数据类型(Struct、Array、Map)

    e、SparkSQL函数org.apache.spark.sql.functions包中的
    -- UDF函数(UDAF)
    -- coalesce与repartition使用

    f、Dataframe/Dataset方法
    -- isin方法

    g、变量
    -- 查看变量类型

    h、计算

    -- 关闭Spark科学计数法(两数相除后,部分结果以科学计算法展示,强转成decimal,保留指定精度)

    i、操作

    -- union:需满足字段个数相同( number of columns)、字段顺序相同(union错行导致数据类型改变)、字段类型相同(union错行导致数据类型改变

    j、需求
      -
spark udf match模式匹配

      - spark join key 忽略大小写如果通过Exprs(表达式)来实现join,那可以通过lower函数实现case;而如果通过Seq(序列)来实现join,现在能想到就是提前处理好
      - spark读取不存在的文件返回自定义schema的emptydataframe 
      - spark读取不存在的文件返回hive schema填充的emptydataframe 还需测试
      - spark把资源文件生成dataframe(Schema(country,map(operator,operatorName)))
      - spark dataframe修改schema
      - spark访问array元素
      - s
park 生成随机列

    k、辅助
        - 在resources下配好log4j.properties后, 有时能控制spark日志有时不能

    l、调优
        - spark日报统计变慢了

四、与其他组件配合

  4.1 外部存储

    4.1.1 hbase

      1、scala spark生成hfile

      项目

      hbase-connectors

    4.1.2、mysql

      1、spark操作mysql

  4.2、字符串

    4.3.1 spark操作JSON
    a、spark使用json字符串创建dataframe
    b、spark row转成json
    c、spark map 转json

    4.4.2 把ip最后一位替换为星号*

    4.5.3 隐藏手机号中间的4位或者只显示末尾四位数

    4.5.4 提取字符串  

  4.3、文件

    4.4.1 spark操作文件

    4.4.2 文件名作为dataframe的一列

    4.4.3 禁止spark生成success文件

    4.4.4 禁止生成元数据文件

      ~ parquet

五、辅助

  5.1、查看日志
    a、spark-submit
    b、spark-shell

  5.2、打印配置参数
    a、打印spark应用参数

  5.3、打印执行语句
    a、Spark jdbc打印出insert语句

  5.4、监控Driver、Executor的CPU、堆、Metaspace、类、线程使用情况等
    a、使用JvisualVM监控Spark JVM(包括Driver、Executor)

    b、使用JvisualVM监控Spark Executor JVM

  5.5、使用Arthas连接Spark Executor,以获得jvm信息,没测试通过

七、疑问

分类 描述 原因
只执行spark.read.orc,没触发show等action算子,也会加载数据吗 ???
sparksession为啥非得用val声明 从语法层面保证有且仅有一个SparkSession实例

spark在线文档

1、https://endymecy.gitbooks.io/spark-programming-guide-zh-cn/content/


注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: