前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Spark SQL构建交互式查询引擎

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

作者头像
用户2936994
发布2018-08-27 10:46:39
2.2K0
发布2018-08-27 10:46:39
举报
文章被收录于专栏:祝威廉祝威廉

StreamingPro目前已经涵盖流式/批处理,以及交互查询三个领域,实现配置和SQL化

前言

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

准备工作

  • 下载StreamingPro

README中有下载地址

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

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

同时建立一个只有test.json,下里面的内容有:

代码语言:javascript
复制
{}

假设你把它放在了/tmp目录。

启动StreamingPro

Local模式:

代码语言:javascript
复制
cd  $SPARK_HOME

./bin/spark-submit   --class streaming.core.StreamingApp \
--master local[2] \
--name sql-interactive \
/tmp/streamingpro-0.4.1-SNAPSHOT-online-1.6.1.jar    \
-streaming.name sql-interactive    \
-streaming.job.file.path file:///tmp/test.json \
-streaming.platform spark   \
-streaming.rest true   \
-streaming.driver.port 9004   \
-streaming.spark.service true

访问

代码语言:javascript
复制
http://127.0.0.1:9004/sqlui

后可进入查询界面:

Snip20160709_5.png

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

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

代码语言:javascript
复制
http://127.0.0.1:9004/runtime/spark/sql

参数支持:

参数名

示例

说明

tableName.abc

hdfs://cluster/tmp/a.parquet

索引或者parquet路径,其中abc是SQL中的表名称

sql

SELECT count(distinct(mid)) as a ,floor(floor(time/100)/5)5 as b FROM abc group by floor(floor(time/100)/5)5

查询SQL

loader_clzz.abc

org.elasticsearch.spark.sql

驱动类,如果是parquet文件则可简写为parquet

loader_param.abc.es.nodes

node1

不同驱动可能会有自己一些特定的参数,比如es类的需要通过es.nodes传递ES集群在哪

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

集群模式:

代码语言:javascript
复制
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.job.file.path file:///tmp/test.json \
-streaming.driver.port 9004   \
-streaming.spark.service true

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

服务发现

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

代码语言:javascript
复制
-streaming.zk.servers 127.0.0.1:2181 \
-streaming.zk.conf_root_dir  /streamingpro/jack

之后前端程序只要访问

代码语言:javascript
复制
/streamingpro/jack/address

就能获取IP和端口了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.07.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 准备工作
  • 启动StreamingPro
  • 服务发现
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档