上篇了解了一些基本的Structured Streaming的概念,知道了Structured Streaming其实是一个无下界的无限递增的DataFrame。基于这个DataFrame,我们可以做一些基本的select、map、filter操作,也可以做一些复杂的join和统计。本篇就着重介绍下,Structured Streaming支持的输入输出,看看都提供了哪些方便的操作。
近年来,大数据的计算引擎越来越受到关注,spark作为最受欢迎的大数据计算框架,也在不断的学习和完善中。在Spark2.x中,新开放了一个基于DataFrame的无下限的流式处理组件——Structured Streaming,它也是本系列的主角,废话不多说,进入正题吧!
前面对索引,集群有了大概的认识,本文我们将主要探讨一下搜索的原理,看ES是怎么分析和检索数据的。
Elasticsearch中的数据可以大致分为两种类型:确切值 和 全文文本。
确切值 Foo
和 foo
就并不相同。确切值 2014
和 2014-09-15
也不相同。
全文文本,从另一个角度来说是文本化的数据(常常以人类的语言书写),比如一篇推文(Twitter的文章)或邮件正文。
因为我们要重构公司现有的搜索,考虑在前的肯定是架构层面优先,比如可靠性,扩展性,所以本系列文章会优先描述架构层面的内容,至于使用后续可以慢慢探究。
本系列文章之间可能会有重复赘述的内容,也是为了更好的表述清楚关联关系。
前面介绍了集群,索引,类型等相关的内容,本文继续探讨集群,索引相关的内容。
在前面两篇文章中我们知道了ES的基本概念和安装,还没有真正使用ES, 本篇文章就以一个实例来简单入门ES的使用。
我们就以博客文章作为我们的数据资源吧。
字段 | 内容 |
---|---|
title |
Elasticsearch 简介 |
author |
China祥 |
date |
2017-09-25 17:00:00 |
content |
Elasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎。 |
view |
520 |
问题:map拷贝时发现数据会变化。 先看例子:
public class CopyMap {
public static void main(String[] args) {
Map<String,Integer> map = new HashMap<String,Integer>();
map.put( "key1", 1);
Map<String,Integer> mapFirst = map;
System. out.println( mapFirst);
map.put( "key2", 2);
System. out.println( mapFirst);
}
}