Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
K
kb
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 2
    • Issues 2
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Operations
    • Operations
    • Incidents
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • granite
  • kb
  • Wiki
    • Knowledge_share
  • Spark简单使用心得

Last edited by 王鹏举 Mar 11, 2022
Page history
This is an old version of this page. You can view the most recent version or browse the history.

Spark简单使用心得

Spark简单使用心得

  • Spark SQL

开发环境

  • IDEA
    • Scala插件
  • sbt
    • sbt-assembly插件

id关联库项目中用Spark干了什么

  1. 融合
    • qcc源库中有人的pid和公司的fid
    • 在tb_person表中保存(pid, ppid)的关系
    • 在tb_company表中保存(fid, digest)的关系
    • 在融合库中,保存人企关系,里面保存人的ppid和公司的digest
    • 读5个亿级别大表(数据量7亿),写4亿数据,关联8次,排序3次,25分钟
    • 之后load data进数据库
  2. 事后检测/修复
    • 数据融合时,检测是否所有的pid都能关联到ppid
    • 筛选错误数据,快速确定数据量,导出爬虫任务重新采集
    • 筛选关联库较工商库少的数据,导出爬虫任务
  3. 统计
    • 将digest与hudi表进行关联,统计不同企业类型不同经营状态的数量,Spark直接将统计数据写入数据库(因为数据量小所以可以直接写)
  4. 交互式分析数据

概念理解

Spark Application

RDD

  • RDD
    • partitions
    • partitioner
    • dependencies
    • compute
    • preferredLocations
  • transform, action
  • 早期API
  • 处理非结构化数据

DataFrame/Dataset

  • RDD提供的算子太抽象,难以优化
  • DataFrame 即 Dataset[Row]
  • 带schema,甚至推断schema,可以优化 (Tungsten)
  • DataSet提供DSL算子,可以优化 (Catalyst)
    • select
    • where
    • $
    • +
    • >
    • ...
  • 类型安全

使用心得

  • 能配置化的东西配置化 (pureconfig)
  • 多使用Dataset的DSL方法,而非SQL语句

参考

  • Scala
  • sbt
  • SparkSQLExample
  • A Tale of Three Apache Spark APIs: RDDs vs DataFrames and Datasets
Clone repository
  • README
  • basic_guidelines
  • basic_guidelines
    • basic_guidelines
    • dev_guide
    • project_build
    • 开发流程
  • best_practice
  • best_practice
    • AlterTable
    • RDS
    • azkaban
    • create_table
    • design
    • elasticsearch
    • elasticsearch
      • ES运维
    • logstash
View All Pages