专栏首页王小雷Spark学习之Spark SQL(8)

Spark学习之Spark SQL(8)

Spark学习之Spark SQL(8)

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

2. Spark SQL的三大功能

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

带有Hive支持的Spark SQL的Maven索引
    groupID =org.apache.spark
    artifactID = spark-hive_2.10
    version = 1.2.0

5. 在应用使用Spark

5.1 初始化Spark
        //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)
5.2 基本的查询示例
        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)

Scala版本的字符串长度UDF
    registerFunction("strLenScala",(_:string).length)
    val tweetLength = hiveCtx.sql("SELECT strLenScala('tweet') FROM tweets LIMIT 10")

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 14.4 Spark-SQL基于Cassandra数据分析编程实例

    版权声明:本文为王小雷原创文章,未经博主允许不得转载 https://blog.csdn.n...

    王小雷
  • Spark学习之基础相关组件(1)

    Spark学习之基础相关组件(1) 1. Spark是一个用来实现快速而通用的集群计算的平台。 2. Spark的一个主要特点是能够在内存中进行计算,因而更快。...

    王小雷
  • 14.1 Apache Spark 简介快速入门

    Spark使用先进的DAG调度系统,查询优化器与物理执行引擎,实现了批处理与流处理的高性能。

    王小雷
  • 米斯特白帽培训讲义 挖掘篇

    信息侦探技术用于得到网站信息,包括网站服务器、WHOIS 信息,网站用户信息,网站程序信息以及其他。这些信息服务于我们的渗透测试。

    ApacheCN_飞龙
  • springmvc之异常处理SimpleMappingExceptionResolver

    我们在springmvc.xml文件中配置了当抛出该异常时跳转到error界面,同时将异常信息命名为ex。

    绝命生
  • iOS开发——APNs推送

    访问 苹果开发者账户,进入帐号首页,选择Certificates, Identifiers & Profiles

    羊羽shine
  • 数据库时区那些事儿 - MySQL的时区处理

    当JVM时区和数据库时区不一致的时候,会发生什么?这个问题也许你从来没有注意过,但是当把Java程序容器化的时候,问题就浮现出来了,因为目前几乎所有的Docke...

    颇忒脱
  • 2019年十大技术趋势

    正如17世纪英国政治家和散文家George Saville曾写道:“先知们最优秀的能力就是拥有好的记忆力。”用通俗的方式来说就是:过去是未来的序幕。如果不分析过...

    mixlab
  • ESA2GJK1DH1K基础篇: APP使用SmartConfig绑定Wi-Fi 设备并通过MQTT控制设备--单片机源码讲解(SimplePackage)

    https://www.cnblogs.com/yangfengwu/p/12539421.html

    杨奉武
  • 基于扩增子测序的新冠病毒测序引物设计

    用户7625144

扫码关注云+社区

领取腾讯云代金券