Apache Spark:核心概念与实战入门

需积分: 11 0 下载量 85 浏览量 更新于2024-08-05 收藏 626KB PDF 举报
"day01_spark核心概念.pdf"文件主要介绍了Apache Spark这一强大的大数据处理框架的基础知识。Spark被设计为一个快速、通用且可扩展的计算引擎,特别适用于大规模数据处理,包括批处理、实时流计算、机器学习和图计算等多个领域。 首先,我们了解到Spark的历史,它起源于Yahoo!的项目,后来成为Apache软件基金会的一部分。Spark官网地址是<http://spark.apache.org/>,提供了英文和中文文档资源,英文文档链接为<https://spark.apache.org/docs/2.3.0>,中文文档则可以在<https://spark-reference-doc-cn.readthedocs.io/zh_CN/latest/>获取。下载Spark的资源可以从<https://archive.apache.org/dist/spark/>获取。 Spark的核心概念包括: 1. **弹性分布式数据集(RDD,Resilient Distributed Datasets)**:Spark的主要抽象,是一种容错的数据结构,可以进行高效的操作,支持各种数据处理任务。 2. **DataFrame和Dataset**:Spark SQL提供了DataFrame和Dataset两种数据处理模型,DataFrame更易读易写,而Dataset提供更严格的类型检查和性能优化。 3. **Spark Streaming**:用于实时流处理,可以处理来自各种数据源的实时数据流,进行持续的计算。 4. **MLlib**:机器学习库,包含了大量的监督和非监督学习算法,支持数据挖掘和预测分析。 5. **GraphX**:图计算模块,用于处理图数据结构,执行图算法和分析。 6. **集群管理组件**:Master负责全局资源管理和协调,Worker节点处理具体任务,Executor执行作业,Driver负责任务调度和结果收集,Task是Executor上的具体操作单元,Job是一组相关的Task,Stage是任务的逻辑划分。 在使用Spark时,例如在IntelliJ IDEA中编写WordCount示例,你需要: 1. 配置Maven仓库:确保本地仓库设置正确,支持Spark的依赖下载。 2. 安装Scala:选择适合的Scala版本(如2.11.8),配置环境变量并验证安装。 3. 创建Maven项目:在IDEA中初始化一个新的Maven项目。 4. 安装Scala插件:以便IDEA支持Scala开发。 5. 添加Scala框架和依赖:通过Maven插件添加Scala支持,并确保所选版本与项目兼容。 6. 创建`SparkContext`:Spark程序的起点,通过`SparkConf`配置应用程序的参数和配置信息。 "day01_spark核心概念.pdf"文档涵盖了Spark的起源、架构组件、关键模块以及在实际开发中的配置和使用方法,对于理解Spark的基础理论和实践操作至关重要。

select * from ( SELECT P.PATIENT_ID, P.VISIT_ID, PM.NAME, PM.SEX, P.ADMISSION_DATE_TIME, ( SELECT TOP 1 DP.DEPT_NAME FROM DEPT_DICT DP WHERE DP.DEPT_CODE = P.DEPT_ADMISSION_TO ) AS DEPT_ADM, P.DISCHARGE_DATE_TIME, ( SELECT TOP 1 DP.DEPT_NAME FROM DEPT_DICT DP WHERE DP.DEPT_CODE = P.DEPT_DISCHARGE_FROM ) AS DEPT_DIS, DATEDIFF( DAY, P.ADMISSION_DATE_TIME, P.DISCHARGE_DATE_TIME ) AS INPAT_DAYS, P.DOCTOR_IN_CHARGE --datediff(day, P.ADMISSION_DATE_TIME,P.DISCHARGE_DATE_TIME) as zyts FROM PAT_VISIT P INNER JOIN PAT_MASTER_INDEX PM ON PM.PATIENT_ID = P.PATIENT_ID WHERE select * from ( SELECT P.PATIENT_ID, P.VISIT_ID, PM.NAME, PM.SEX, P.ADMISSION_DATE_TIME, ( SELECT TOP 1 DP.DEPT_NAME FROM DEPT_DICT DP WHERE DP.DEPT_CODE = P.DEPT_ADMISSION_TO ) AS DEPT_ADM, P.DISCHARGE_DATE_TIME, ( SELECT TOP 1 DP.DEPT_NAME FROM DEPT_DICT DP WHERE DP.DEPT_CODE = P.DEPT_DISCHARGE_FROM ) AS DEPT_DIS, DATEDIFF( DAY, P.ADMISSION_DATE_TIME, P.DISCHARGE_DATE_TIME ) AS INPAT_DAYS, P.DOCTOR_IN_CHARGE --datediff(day, P.ADMISSION_DATE_TIME,P.DISCHARGE_DATE_TIME) as zyts FROM PAT_VISIT P INNER JOIN PAT_MASTER_INDEX PM ON PM.PATIENT_ID = P.PATIENT_ID WHERE P.DISCHARGE_DATE_TIME >= '2016-01-01' AND P.DISCHARGE_DATE_TIME < = '2023-07-10' AND DATEDIFF( DAY,P.ADMISSION_DATE_TIME, P.DISCHARGE_DATE_TIME ) >= 30 ) t order by inpat_days desc P.DISCHARGE_DATE_TIME >= '2016-01-01' AND P.DISCHARGE_DATE_TIME < = '2023-07-10' AND DATEDIFF( DAY,P.ADMISSION_DATE_TIME, P.DISCHARGE_DATE_TIME ) >= 30 ) t order by inpat_days desc 帮我把这段sql优化一下

2023-07-25 上传