# docker spark **Repository Path**: xiwanggit/docker-spark ## Basic Information - **Project Name**: docker spark - **Description**: spark的集群环境 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2019-04-23 - **Last Updated**: 2022-07-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### docker spark集群 & simple test ### 执行 * 启动容器:`docker-compose up -d` * 进入容器:`docker exec -it Spark_master bash` * 执行`Spark SQL`:`spark-submit --master local[1] /code/python/pyspark_sql.py` * 执行`Spark MLLib`:`pip3 install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple & spark-submit --master local[1] /code/python/pyspark_code.py` * 停止容器: `docker-compose down` ### [Spark Sql](http://spark.apache.org/docs/latest/sql-programming-guide.html) * jdbc:RDB(见代码`pyspark_sql.py`) * hdfs:json,txt,parquet, csv,orc,avro,libsvm... * hive table * file:json,csv(见代码`pyspark_sql.py`) ### [Spark Streaming](http://spark.apache.org/docs/latest/streaming-programming-guide.html) ### [Spark Mllib](http://spark.apache.org/docs/latest/ml-guide.html) ### [Spark Graphx](http://spark.apache.org/docs/latest/graphx-programming-guide.html) ### [SparkR](http://spark.apache.org/docs/latest/sparkr.html) ### 笔记 ##### Spark SQL * 过程:所有 Spark SQL 语句最终都能通过 Catalyst 来解析、优化,最终生成可以执行的 Java 字节码 * 分析阶段:分析逻辑树,解决引用;通过Parser模块被解析为语法树 * 逻辑优化阶段:语法树通过Analyzer模块借助于Catalog中的表信息解析为Logical Plan * 物理计划阶段:Catalyst 会生成多个计划,并基于成本进行对比;Optimizer再通过各种基于规则的优化策略进行深入优化,得到Optimized Logical Plan * 代码生成阶段:将逻辑执行计划转换为Physical Plan * 执行和解析 * 逻辑解析:project=列;data source = table; filter=where * 执行:result = 列;datasoure = table;opertion=where * 执行流程 * parse解析查询语句:解析SQL语句形成逻辑解析树。sql语法是否错误:缺少标准字段、表是否存在等 * Bind:将解析后的逻辑解析树与数据库字典进行绑定、形成执行计划树。表的位置、字段信息、执行逻辑存在数据库的字典中,因此需要绑定 * Optimize:根据查询引擎提供的多个执行树,筛选出来最优的执行计划。 * Execute:执行过程operation->DataSource->Result * 数据源 * Hive * ES * HDFS:json,txt,parquet, csv,orc,avro,libsvm... * JDBC:MySQL、Oracle, PostgreSQL... * File:json,csv... * 要点 * RDD、DataFrame、DStream之间可以相互转化 * 查询Spark,都需要实用SqlContext对象 * SparkSql中的大部分的Sql函数都可以使用Hive中的函数 * spark sql过程 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0112/174347_eb504961_379161.png "sparksql.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0112/174402_29a9ea60_379161.png "sparksql过程.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0112/174413_5ce29868_379161.png "sparksql运行架构.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0112/174428_e48bf9a1_379161.png "catalyst过程.png") ##### hive on spark * 设置:hive.execution.engine:默认mr,可选tez和spark * 原理:将Hive的表转化为RDD以便Spark处理。本质上,Hive的表和Spark的HadoopRDD都是HDFS上的一组文件,通过InputFormat和RecordReader读取其中的数据 * hive架构 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0112/174232_a60bd8b6_379161.png "Hive架构.png") * hive on spark ![输入图片说明](https://images.gitee.com/uploads/images/2021/0112/174257_63fe89fb_379161.png "hive on spark.png")