[DB] Spark SQL

概述

  • 类似Hive、Pig
  • 基于Spark(内存)
  • 集成在Spark中,不需单独安装
  • 提供统一的数据访问方式
  • 结构化的数据类型:JDBC、JSON、Hive、Parquet(Saprk SQL 默认数据源)
  • 兼容Hive
  • 支持标准的数据连接:JDBC、ODBC
  • 核心概念:表(DataFrame)= 结构(Schema) + 数据(RDD)

创建DataFrame

  • 使用 case class 样本类
    • 定义表的 schema
    • 导入HDFS的dept.csv作为数据
  • 使用 Spark Session
    • 包括 Spark Context、SQL Context、Streaming Context
    • 2.0后引入的统一访问接口,可访问所有spark组件
    • 使用StructType创建schema
  • 读取带格式文件
    • Json

 

操作DataFrame

  • DSL语句
  • SQL语句

操作DataSet

  • DataFrame缺乏编译时类型安全

Spark SQL 视图

  • 虚表,不存储数据
  • 普通视图:本地视图,只在当前session中有效
  • 全局视图:在不同session中都有效,把全局视图创建命名空间,global_temp

数据源

  • load() 和 save()
  • Parquet文件
    • 列式存储文件,Spark SQL默认数据源
    • 把其它文件转为Parquet文件
    • 支持Schema的合并:项目开始的时候,表(schema)很简单,逐步向表中增加新的列
  • Json文件
    • val testResult = spark.read.json("/usr/local/tmp_files/emp.json")
  • JDBC
  • Hive

性能优化

  • 缓存方式
    • 在内存中缓存数据
    • 性能优化参数    

IDE中开发

  • 关闭log4j

参考

官网

http://spark.apache.org/sql/

原文地址:https://www.cnblogs.com/cxc1357/p/13096982.html