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简单使用心得

Spark简单使用心得 · Changes

Page history
update: Spark简单使用心得 authored Mar 10, 2022 by 王鹏举's avatar 王鹏举
Show whitespace changes
Inline Side-by-side
Showing with 63 additions and 0 deletions
+63 -0
  • knowledge_share/Spark简单使用心得.md knowledge_share/Spark简单使用心得.md +63 -0
  • No files found.
knowledge_share/Spark简单使用心得.md 0 → 100644
View page @ a8339483
# 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
![](https://spark.apache.org/docs/2.4.7/img/cluster-overview.png)
### 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](https://docs.scala-lang.org/overviews/scala-book/introduction.html)
- [sbt](https://www.scala-sbt.org/1.x/docs/)
- [SparkSQLExample](https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/sql/SparkSQLExample.scala)
- [A Tale of Three Apache Spark APIs: RDDs vs DataFrames and Datasets](https://databricks.com/blog/2016/07/14/a-tale-of-three-apache-spark-apis-rdds-dataframes-and-datasets.html)
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