在scala中使用spark sql解决特定需求(2)

接着上篇文章,本篇来看下如何在scala中完成使用spark sql将不同日期的数据导入不同的es索引里面。

首下看下用到的依赖包有哪些:

下面看相关的代码,代码可直接在跑在win上的idea中,使用的是local模式,数据是模拟造的:

分析下,代码执行过程:

(1)首先创建了一个SparkSession对象,注意这是新版本的写法,然后加入了es相关配置

(2)导入了隐式转化的es相关的包

(3)通过Seq+Tuple创建了一个DataFrame对象,并注册成一个表

(4)导入spark sql后,执行了一个sql分组查询

(5)获取每一组的数据

(6)处理组内的Struct结构

(7)将组内的Seq[Row]转换为rdd,最终转化为df

(8)执行导入es的方法,按天插入不同的索引里面

(9)结束

需要注意的是必须在执行collect方法后,才能在循环内使用sparkContext,否则会报错的,在服务端是不能使用sparkContext的,只有在Driver端才可以。

原文发布于微信公众号 - 我是攻城师(woshigcs)

原文发表时间:2017-07-21

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏自动化测试实战

Flask第一篇——URL详解

3026
来自专栏技术博文

linux zip 命令详解(2)

linux zip 命令详解  功能说明:压缩文件。  语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-l...

3906
来自专栏林欣哲

区块链开发之Go语言—文件系统

处理的文件名 path库 filepath库 查看文件的元信息 os.Stat os.Lstat 操作临时文件区域 os.TempDir os — 平台无关的操...

3918
来自专栏破晓之歌

python之调用系统命令 原

os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构的结果。

3504
来自专栏性能与架构

JS中setTimeout是如何实现的

我们知道 Javascript引擎是单线程的,而setTimeout方法的作用是延后执行目标代码,同时还可以继续往下执行 setTimeout是如何实现的? 这...

3838
来自专栏kalifaの日々

前端绘图:js-sequence-diagrams安装及入门

1.js-sequence-diagrams的作用 将简单的文本行绘制成手绘风(或是简单的直线条)的流程图。优点是不需要复杂的数据结构。 ---- 这次做一个数...

4149
来自专栏PHP在线

10个字符串相关的PHP代码片段

1、自动移除字符串中的 HTML 标记 在用户表单中,你可能希望移除所有不必要的 HTML 标记。使用 strip_tags() 函数可以简单地做到这一点: $...

3397
来自专栏黄Java的地盘

旧项目TypeScript改造问题与解决方案记

由于本次改造的项目为一个通过NPM进行发布的基础服务包,因此本次采用TypeScript进行改造的目标是移除Babel全家桶,减小包体积,同时增加强类型约束从而...

7821
来自专栏你不就像风一样

[原创]一款小巧、灵活的Java多线程爬虫框架(AiPa)

AiPa 只需要使用者提供网址集合,即可在多线程下自动爬取,并对一些异常进行处理。

1403
来自专栏陈纪庚

js事件循环

之前有看过一些事件循环的博客,不过一阵子没看就发现自己忘光了,所以决定来自己写一个博客总结下!

2352

扫码关注云+社区

领取腾讯云代金券