使用Spark SQL构建交互式查询引擎

前言

StreamingPro 原来仅仅是用来作为Spark Streaming的一个配置化+SQL封装,然而不经意间,已经涵盖了批处理,交互式查询等多个方面。今天就讲讲如何使用StreamingPro构建一个交互式查询引擎。

准备工作

  • 下载StreamingPro

README中有下载地址

如果你使用了 Spark 2.0 版本,则要下载对应页面上的Spark 安装包。因为目前Spark 2.0 默认支持Scala 2.11。我提供了一个机遇Scala 2.10版本的。

 我们假设您将文件放在了/tmp目录下。

  • 启动StreamingPro

Local模式:

cd  $SPARK_HOME

./bin/spark-submit   --class streaming.core.StreamingApp \
--master local[2] \
--name sql-interactive \
/tmp/streamingpro-0.2.1-SNAPSHOT-dev-1.6.1.jar    \
-streaming.name sql-interactive    \
-streaming.platform spark   \
-streaming.rest true   \
-streaming.driver.port 9004   \
-streaming.spark.service true

访问

http://127.0.0.1:9004/sqlui

后可进入查询界面:

Snip20160709_5.png

目前支持elasticsearch 索引,HDFS Parquet 等的查询,并且支持多表查询。

除了交互式界面以外,也支持接口查询:

http://127.0.0.1:9004/runtime/spark/sql

参数支持:

上面的参数都是成套出现,你可以配置多套,从而映射多张表。

集群模式:

cd  $SPARK_HOME

./bin/spark-submit   --class streaming.core.StreamingApp \
--master yarn-cluster \
--name sql-interactive \
/tmp/streamingpro-0.2.1-SNAPSHOT-dev-1.6.1.jar    \
-streaming.name sql-interactive    \
-streaming.platform spark   \
-streaming.rest true   \
-streaming.driver.port 9004   \
-streaming.spark.service true

接着进入spark-ui界面获取driver的地址,就可以访问了。

服务发现

因为集群模式,driver的地址是变化的,所以一旦集群启动后我们需要注册到某个地方,从而能然前端知道。目前支持zookeeper的方式,在启动命令行中添加如下几个参数:

-streaming.zk.servers 127.0.0.1:2181 \
-streaming.zk.conf_root_dir  /streamingpro/jack

之后前端程序只要访问

/streamingpro/jack/address

就能获取IP和端口了。

时间: 2024-10-30 04:37:24

使用Spark SQL构建交互式查询引擎的相关文章

spark streaming-Spark Streaming 交互式查询问题

问题描述 Spark Streaming 交互式查询问题 假设我的通过Spark Streaming 来分析用户实时提交过来的数据,数据包含, 假设.对应 spark代码为 ssc.socketTextStream("...",port) 然后,我想实现基于用户ID的查询 var qid = "u_123"//从控制台中读入待查询的uid ssc.filter(uid==qid) ssc.start() ssc.awaitTermination() 好问题来了,该如

使用Spark SQL 构建流式处理程序

前言 今天介绍利用 StreamingPro 构建流式(Spark Streaming)计算程序 准备工作 下载StreamingPro README中有下载地址 我们假设您将文件放在了/tmp目录下. 填写配置文件 实例一,Nginx日志解析后存储到ES gist 测试样例, 模拟数据,并且单机跑起来 gist 假设你使用的是第二个配置文件,名字叫做test.json,并且放在了/tmp目录下. 启动StreamingPro Local模式: cd $SPARK_HOME ./bin/spar

使用Spark SQL构建批处理程序

前言 今天介绍利用StreamingPro完成批处理的流程. 准备工作 下载StreamingPro README中有下载地址 我们假设您将文件放在了/tmp目录下. 填写配置文件 实例一,我要把数据从ES导出到HDFS,并且形成csv格式. gist  启动StreamingPro Local模式: cd $SPARK_HOME ./bin/spark-submit --class streaming.core.StreamingApp \ --master local[2] \ --name

《Spark 官方文档》Spark SQL, DataFrames 以及 Datasets 编程指南(一)

Spark SQL, DataFrames 以及 Datasets 编程指南 概要 Spark SQL是Spark中处理结构化数据的模块.与基础的Spark RDD API不同,Spark SQL的接口提供了更多关于数据的结构信息和计算任务的运行时信息.在Spark内部,Spark SQL会能够用于做优化的信息比RDD API更多一些.Spark SQL如今有了三种不同的API:SQL语句.DataFrame API和最新的Dataset API.不过真正运行计算的时候,无论你使用哪种API或语

选择 Parquet for Spark SQL 的 5 大原因

列式存储 (columnar storage) 在处理大数据的时候可以有效地节省时间和空间.例如,与使用文本相比,Parquet 让 Spark SQL 的性能平均提高了 10 倍,这要感谢初级的读取器过滤器.高效的执行计划,以及 Spark 1.6.0 中经过改进的扫描吞吐量!本文将为您详细介绍使用 Parquet for Spark SQL 优势的 5 大原因. 为了了解 Parquet 有多么强大,我们从 spark-perf-sql 中挑选了 24 个从 TPC-DS 中衍生的查询来完成

基于Renascence架构的SQL查询引擎设计

基于Renascence架构的sqlite查询优化 sqlite查询优化方案是一开始是在Hw时设计的,但当时只实现一些简单case,并未完成sql的普遍支持.后面考虑到这可以做为 Renascence 架构的一个实验场景,因此将其方案做了一番修改,代码也重写了一遍,现在做成一个能支持普通sql查询的demo. sqlite架构 参考:http://wiki.dzsc.com/info/7440.html sqlite是移动设备广泛使用的轻量级数据库引擎.它主要由前端--虚拟机--后端三部分组成,

使用StreamingPro 快速构建Spark SQL on CarbonData

前言 CarbonData已经发布了1.0版本,变更还是很快的,这个版本已经移除了kettle了,使得部署和使用 变得很简单,而且支持1.6+ ,2.0+等多个Spark版本. StreamingPro可以使得你很简单通过一个命令就能体验Carbondata,并且支持Http/JDBC的访问形态. 下载Spark发行版 比如我下载后的版本是这个: spark-1.6.3-bin-hadoop2.6. 下载StreamingPro 地址在这: https://pan.baidu.com/s/1eR

为什么说Spark SQL远远超越了MPP SQL

这里说的并不是性能,因为我没尝试对比过(下文会有简单的说明),而是尝试从某种更高一层次的的角度去看,为什么Spark SQL 是远远超越MPP SQL的. Spark SQL 和 MPP SQL 其实不在一个维度上.简而言之, MPP SQL 是 Spark SQL 的一个子集 Spark SQL 成为了一种跨越领域的交互形态 MPP SQL 是 Spark SQL 的一个子集 MPP SQL 要解决的技术问题是海量数据的查询问题.这里根据实际场景,你还可以加上一些修饰词汇,譬如秒级,Ad-ho

关于CarbonData+Spark SQL的一些应用实践和调优经验分享

大数据时代,中大型企业数据的爆发式增长,几乎每天都能产生约 100GB 到 10TB 的数据.而企业数据分系统构建与扩张,导致不同应用场景下大数据冗余严重.行业亟需一个高效.统一的融合数仓,从海量数据中快速获取有效信息,从而洞察机遇.规避风险. 在这样的现状下,CarbonData 诞生了,作为首个由中国贡献给Apache社区的顶级开源项目,CarbonData 提供了一种新的融合数据存储方案,以一份数据同时支持多种大数据应用场景,并通过丰富的索引技术.字典编码.列存等特性提升了 IO 扫描和计