前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spark学习之Spark SQL(8)

Spark学习之Spark SQL(8)

作者头像
王小雷
发布2018-01-02 14:36:48
1.1K0
发布2018-01-02 14:36:48
举报
文章被收录于专栏:王小雷

Spark学习之Spark SQL(8)

1. Spark用来操作结构化和半结构化数据的接口——Spark SQL、

2. Spark SQL的三大功能

代码语言:javascript
复制
2.1 Spark SQL可以从各种结构化数据(例如JSON、Hive、Parquet等)中读取数据。
2.2 Spark SQL不仅支持在Spark程序内使用SQL语句进行查询,也支持从类似商业智能软件Tableau这样的外部工具中通过标准数据库连接器(JDBC/ODBC)连接Spark SQL进行查询。
2.3 当在Spark程序内使用Spark SQL时,Spark SQL支持SQ与常规的Python/Java/Scala代码高度整合,包括连接RDD与SQL表、公开的自定义SQL函数接口等。

3. SchemaRDD(1.3版本后为DataFrame)是存放Row对象的RDD,每个Row对象代表一行记录。SchemaRDD还包含记录的结果信息(即数据字段)。

4. 连接Spark SQL

代码语言:javascript
复制
带有Hive支持的Spark SQL的Maven索引
代码语言:javascript
复制
    groupID =org.apache.spark
    artifactID = spark-hive_2.10
    version = 1.2.0

5. 在应用使用Spark

代码语言:javascript
复制
5.1 初始化Spark
代码语言:javascript
复制
        //Sacla中SQL的import的声明
        import org.apache.spark.sql.hive.HiveContext
        import org.apache.spark.sql.SQLContext
        //Scala中SQL导入隐式转换支持
        val hiveCtx = ...//创建HiveContext
        import hiveCtx._//导入隐式转换支持
        //创建SQL上下文环境
        val sc = new SparkContext(...)
        val hiveCtx = new HiveContext(sc)
代码语言:javascript
复制
5.2 基本的查询示例
代码语言:javascript
复制
        val input = hiveCtx.jsonFile(inputFile)
        //注册输入的SchemaRDD
        input.registerTempTable("tweets")
        //依据tetwwtCount(转发计算)宣传推文
        val topTweeter = hiveCtx.sql("SELECT text,retweetCount FROM tweets ORDER BY retweetCount LIMIT 10")

6. 用户自定义函数(UDF)

代码语言:javascript
复制
Scala版本的字符串长度UDF
代码语言:javascript
复制
    registerFunction("strLenScala",(_:string).length)
    val tweetLength = hiveCtx.sql("SELECT strLenScala('tweet') FROM tweets LIMIT 10")
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spark学习之Spark SQL(8)
    • 1. Spark用来操作结构化和半结构化数据的接口——Spark SQL、
      • 2. Spark SQL的三大功能
        • 3. SchemaRDD(1.3版本后为DataFrame)是存放Row对象的RDD,每个Row对象代表一行记录。SchemaRDD还包含记录的结果信息(即数据字段)。
          • 4. 连接Spark SQL
            • 5. 在应用使用Spark
              • 6. 用户自定义函数(UDF)
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档