当前搜索:

[算法系列]算法一 地理空间距离计算优化

1. 地理空间距离计算面临的挑战打开美团app,不管是筛选团购还是筛选商家,默认的排序项都是“离我最近”或者“智能排序”(如下图所示):不管是“离我最近”还是“智能排序”,都涉及到计算用户位置与各个团购单子或者商家的距离(注:在智能排序中距离作为一个重要的参数参与排序打分)。以筛选商家为例,北京地区有5~6w个POI(本文将商家称之为POI),当用户进入商家页,请求北京全城+所有品类+离我最近/智...
阅读(206) 评论(0)

[Flink]Flink1.3 Stream指南八 图解事件时间与Watermarks

如果你正在构建实时流处理应用程序,那么事件时间处理是你迟早必须使用的功能之一。因为在现实世界的大多数用例中,消息到达都是无序的,应该有一些方法,通过你建立的系统知道消息可能延迟到达,并且有相应的处理方案。在这篇博文中,我们将看到为什么我们需要事件时间处理,以及我们如何在ApacheFlink中使用它。EventTime是事件在现实世界中发生的时间,ProcessingTime是Flink系统处理该...
阅读(404) 评论(0)

[Flink]Flink1.3 Stream指南七 理解事件时间与Watermarks

Flink实现了数据流模型(Dataflow Model)中许多技术。如果想对事件时间(event time)和水位线(watermarks)更详细的了解,请参阅下面的文章:The world beyond batch: Streaming 101The Dataflow Model支持事件时间的流处理器需要一种方法来衡量事件时间的进度。例如,一个构建按小时处理窗口的窗口算子,当事件时间超过一小时...
阅读(375) 评论(0)

[Flink]Flink1.3 Stream指南六 事件时间与处理时间

Flink在数据流中支持几种不同概念的时间。1. 处理时间 Processing TimeProcessing Time(处理时间)是指执行相应操作机器的系统时间(Processing time refers to the system time of the machine that is executing the respective operation.)。当一个流程序以处理时间来运行时,...
阅读(231) 评论(0)

[Flink]Flink1.3 Stream指南五 窗口触发器与驱逐器

1. 窗口触发器触发器(Trigger)确定窗口(由窗口分配器形成)何时准备好被窗口函数处理。每个窗口分配器都带有默认触发器。如果默认触发器不满足你的要求,可以使用trigger(...)指定自定义触发器。触发器接口有五种方法允许触发器对不同的事件做出反应:public abstract TriggerResult onElement(T element, long timestamp, W wi...
阅读(281) 评论(0)

[Flink]Flink1.3 Stream指南四 窗口函数

在定义窗口分配器之后,我们需要在每个窗口上指定我们要执行的计算。这是窗口函数的责任,一旦系统确定窗口准备好处理数据,窗口函数就处理每个窗口中的元素。窗口函数可以是ReduceFunction,FoldFunction或WindowFunction其中之一。前两个函数执行更有效率,因为Flink可以在每个窗口中元素到达时增量地聚合。WindowFunction将获得一个包含在窗口中所有元素的迭代器以...
阅读(209) 评论(0)

[Flink]Flink1.3 Batch指南二 集群运行

Flink程序可以分布在许多机器的群集上。有两种方式可以将程序发送到集群上运行: (1) 命令行接口 (2) 远程环境1. 命令行接口命令行接口允许你将打包程序(JAR)提交到集群(或单机配置)。详细请参阅[Flink]Flink1.3 指南四 命令行接口。2. 远程环境远程环境允许你直接在集群上运行Flink Java程序。远程环境指的是你要在上面运行程序的集群。2.1 Maven依赖使用下面依...
阅读(166) 评论(0)

[Flink]Flink1.3 Stream指南三 窗口分配器

Windows(窗口)是处理无限数据流的核心。Windows将流分解成有限大小的"桶",在上面我们可以进行计算。本文档重点介绍如何在Flink中处理窗口,以及如何从它提供的功能中获得最大的收益。窗口Flink程序的一般结构如下。第一个片段指的是指定key的数据流,而第二个到未指定key的数据流。可以看出,唯一的区别是指定key的数据流调用keyBy()以及window()方法变为未指定key数据流...
阅读(188) 评论(0)

[Flink]Flink1.3 指南五 指定keys

一些转换(例如,join,coGroup,keyBy,groupBy)要求在一组元素上定义一个key。其他转换(Reduce,GroupReduce,Aggregate,Windows)允许在使用这些函数之前对数据进行分组。一个DataSet进行分组如下:DataSet input = // [...] DataSet reduced = input.groupBy(/*define key he...
阅读(187) 评论(0)

[Flink]Flink1.3 指南四 命令行接口

Flink提供了一个命令行接口(CLI)用来运行打成JAR包的程序,并且可以控制程序的运行。命令行接口在Flink安装完之后即可拥有,本地单节点或是分布式的部署安装都会有命令行接口。命令行接口启动脚本是 $FLINK_HOME/bin目录下的flink脚本, 默认情况下会连接运行中的Flink master(JobManager),JobManager的启动脚本与CLI在同一安装目录下。使用命令行...
阅读(232) 评论(0)

[Flink]Flink1.3 Batch指南一 本地运行

Flink可以在单台机器上运行,甚至可以在单个Java虚拟机中运行。 这运行机制可以方便用户在本地测试和调试Flink程序。本节概述了Flink的本地执行机制。本地环境和执行器(executors)允许你可以在本地Java虚拟机上运行Flink程序,或者是在正在运行程序的Java虚拟机上(with within any JVM as part of existing programs)。对于大部分...
阅读(250) 评论(0)

[Flink]Flink1.3 指南二 安装与启动

1. 下载Flink 可以运行在 Linux, Mac OS X和Windows上。为了运行Flink, 唯一的要求是必须在Java 7.x (或者更高版本)上安装。Windows 用户, 请查看 Flink在Windows上的安装指南。你可以使用以下命令检查Java当前运行的版本:java -version 如果你安装的是Java 8,输出结果类似于如下:java version "1.8.0_...
阅读(580) 评论(0)

[Hive]Hive使用指南七 空值与NULL

1. NULL(null)值创建一个临时表tmp_null_empty_test,并插入一些NULL数据:CREATE TABLE IF NOT EXISTS tmp_null_empty_test( uid string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS T...
阅读(2530) 评论(0)

[ElasticSearch]ElasticSearch,Kibana安装与启动

1. 检查JDK版本使用如下命令检验JDK版本:xiaosi@Qunar:~$ java -version java version "1.7.0_40" Java(TM) SE Runtime Environment (build 1.7.0_40-b43) Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode) xiaosi...
阅读(371) 评论(0)

[Maven]maven-shade-plugin使用指南

1. Selecting Contents for Uber JAR下面的POM代码段显示了如何控制在uber JAR中应该包含/排除哪些项目依赖关系:project> ... build> plugins> plugin> groupId>org.apache.maven.pluginsgroupId> artifactId>maven...
阅读(435) 评论(0)

[Scala]Scala学习笔记十 模式匹配

Scala有一个十分强大的模式匹配机制.可以应用在很多场合:switch语句,类型检查等等.此外Scala还提供了样例类,对模式匹配进行了优化.1. 更好的switch如下是Scala中C风格switch语句的等效代码:var sign = 2 val ch = '+' ch match { case '+' => sign = 1 case '-' => sign = -1 case...
阅读(333) 评论(0)

[Scala]Scala学习笔记九 提取器

1. apply和update方法Scala允许你使用如下函数调用语法:f(arg1, arg2, ...) 扩展到可以应用于函数之外的值.如果f不是函数或方法,那么这个表达式就等同于调用:f.apply(arg1, arg2, ...) 如果它出现在赋值语句的等号左侧:f(arg1, arg2, ...) = value 则等同于调用:f.update(arg1, arg2, ..., valu...
阅读(356) 评论(0)

[Guava]Throwables:简化异常和错误的传播与检查

1. 异常传播有时候,你会想把捕获到的异常再次抛出。这种情况通常发生在 Error 或 RuntimeException 被捕获的时候,你没想捕获它们,但是声明捕获 Throwable 和 Exception 的时候,也包括了了 Error 或 RuntimeException。Guava 提供了若干方法,来判断异常类型并且重新传播异常。例如:try { someMethodThatCou...
阅读(375) 评论(0)

[Scala]Scala学习笔记八 高阶函数

Scala混合了面向对象和函数式的特性.在函数式编程语言中,函数可以像任何其他数据类型一样被传递和操作.如果想要给算法传入明细动作时,只需要将明细动作包在函数当中作为参数传入即可.1. 作为值的函数在Scala中,函数就和数字一样,可以在变量中存放:import scala.math._ val num = 3.14 val fun = ceil _ println(num) // 3.14 p...
阅读(327) 评论(0)

[Scala]Scala学习笔记七 正则表达式

1. Regex对象我们可以使用scala.util.matching.Regex类使用正则表达式.要构造一个Regex对象,使用String类的r方法即可:val numPattern = "[0-9]+".r 如果正则表达式包含反斜杠或引号的话,那么最好使用"原始"字符串语法"""...""":val positiveNumPattern = """^[1-9]\d*$""" 如果在Java中...
阅读(311) 评论(0)
816条 共41页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:1379389次
    • 积分:21340
    • 等级:
    • 排名:第398名
    • 原创:623篇
    • 转载:133篇
    • 译文:60篇
    • 评论:182条
    博客专栏
    文章分类
    最新评论