Spark Sql系统入门4:spark应用程序中使用spark sql

简介: Spark Sql系统入门4:spark应用程序中使用spark sql

相关篇章


Spark Sql系统入门1:什么是spark sql及包含哪些组件

http://www.aboutyun.com/forum.php?mod=viewthread&tid=20910


Spark Sql系统入门2:spark sql精简总结

http://www.aboutyun.com/forum.php?mod=viewthread&tid=21002



Spark Sql系统入门3:spark sql运行计划精简

http://www.aboutyun.com/forum.php?mod=viewthread&tid=21032



为了使用spark sql,我们构建HiveContext (或则SQLContext 那些想要的精简版)基于我们的SparkContext.这个context 提供额外的函数为查询和整合spark sql数据。使用HiveContext,我们构建SchemaRDDs.这代表我们机构化数据,和操作他们使用sql或则正常的rdd操作如map().


初始化spark sql


为了开始spark sql,我们需要添加一些imports 到我们程序。如下面例子1

例子1Scala SQL imports

// Import Spark SQL
import org.apache.spark.sql.hive.HiveContext
// Or if you can't have the hive dependencies
import org.apache.spark.sql.SQLContext


Scala用户注意,我们不使用 import HiveContext._,像我们这样做SparkContext,获取访问implicits.这些implicits用来转换rdds,带着需要的type信息到spark sql的序列化rdds为查询。相反,一旦我们有了结构化HiveContext实例化,我们可以导入 implicits 在例子2中。导入Java和Python在例子3和4中。例子2Scala SQL imports

// Create a Spark SQL HiveContext
val hiveCtx = ...
// Import the implicit conversions
import hiveCtx._


例子3Java SQL imports

// Import Spark SQL
import org.apache.spark.sql.hive.HiveContext;
// Or if you can't have the hive dependencies
import org.apache.spark.sql.SQLContext;
// Import the JavaSchemaRDD
import org.apache.spark.sql.SchemaRDD;
import org.apache.spark.sql.Row;

例子4Python SQL imports

# Import Spark SQL
from pyspark.sql import HiveContext, Row
# Or if you can't include the hive requirements
from pyspark.sql import SQLContext, Row

一旦我们添加我们的imports,我们需要创建HiveContext,或则SQLContext,如果我们引入Hive依赖(查看例子5和6)。这两个类都需要运行spark。

例子5:使用Scala结构化sql context

val sc = new SparkContext(...)
val hiveCtx = new HiveContext(sc)


例子6:使用java结构化sql context

JavaSparkContext ctx = 
new JavaSparkContext(...);
SQLContext sqlCtx = 
new HiveContext(ctx);


例子7:使用python结构化sql context

hiveCtx = HiveContext(sc)

现在我们有了HiveContext 或则SQLContext,我们准备加载数据和查询。


基本查询例子


为了对一个表查询,我们调用HiveContext或则SQLContext的sql()函数.第一个事情,我们需要告诉spark sql关于一些数据的查询。在这种情况下,我们load Twitter数据【json格式】,和给它一个name,注册为 “临时表”,因此我们可以使用sql查询。

例子8使用Scala加载和查询tweets

val input = hiveCtx.jsonFile(inputFile)
// Register the input schema RDD
input.registerTempTable("tweets")
// Select tweets based on the retweetCount
val topTweets = hiveCtx.sql("SELECT text, 
retweetCount FROM
tweets ORDER BY retweetCount LIMIT 10")


例子9使用Java加载和查询tweets

SchemaRDD input = hiveCtx.
jsonFile(inputFile);
// Register the input schema RDD
input.registerTempTable("tweets");
// Select tweets based on the retweetCount
SchemaRDD topTweets = hiveCtx.
sql("SELECT text, 
retweetCount FROM
tweets ORDER BY retweetCount LIMIT 10");


例子10使用Python加载和查询tweets

input = hiveCtx.jsonFile(inputFile)
# Register the input schema RDD
input.registerTempTable("tweets")
# Select tweets based on the retweetCount
topTweets = hiveCtx.sql("""SELECT text, 
retweetCount FROM
tweets ORDER BY retweetCount LIMIT 10""")


如果你已经安装hive,并且复制hive-site.xml文件到$SPARK_HOME/conf,你也可以运行hiveCtx.sql 查询已存在的hive表。


目录
相关文章
|
2月前
|
SQL JSON 分布式计算
【赵渝强老师】Spark SQL的数据模型:DataFrame
本文介绍了在Spark SQL中创建DataFrame的三种方法。首先,通过定义case class来创建表结构,然后将CSV文件读入RDD并关联Schema生成DataFrame。其次,使用StructType定义表结构,同样将CSV文件读入RDD并转换为Row对象后创建DataFrame。最后,直接加载带有格式的数据文件(如JSON),通过读取文件内容直接创建DataFrame。每种方法都包含详细的代码示例和解释。
|
3月前
|
SQL 安全 网络安全
SQL安装程序规则错误解决方案
在安装SQL Server时,遇到安装程序规则错误是一个比较常见的问题
|
3月前
|
SQL 数据库
SQL数据库基础语法入门
[link](http://www.vvo.net.cn/post/082935.html)
|
3月前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
97 0
|
3月前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
113 0
|
3月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
79 0
|
3月前
|
SQL 分布式计算 大数据
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
97 0
|
分布式计算 资源调度 Java
[Spark]Spark 应用程序部署工具spark-submit
1. 简介 Spark的bin目录中的spark-submit脚本用于启动集群上的应用程序。 可以通过统一的接口使用Spark所有支持的集群管理器,因此不必为每个集群管理器专门配置你的应用程序(It can use all of Spark’s supported cluster managers through a uniform interface so you don’t have to configure your application specially for each one)。
1861 0
|
2月前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
180 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
3月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
82 0