在Spark Streaming 和spark sql 中滑动窗口在数据分析中占据这非常重要的位置,通过spark streaming和spark sql 在2.0以上版本可以直接调用时间滑动窗口window函数,但是在Spark SQL 1.5以下的版本是没有相关API的
时间滑动窗口使用场景:
IP1 向 IP2 在固定时间内10秒(可调)内发送请求次数超过固定次数2000次(可调),可以认为IP1 正在攻击主机IP2。
Spark 2.0 以上的版本可以直接调用window函数
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.RowFactory;
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.types.DataTypes;
import org.apache.spark.sql.types.StructField;
import org.apache.spark.sql.types.StructType;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import static org.apache.spark.sql.functions.window;
/**
* @Auther: ****
* @Date: 2018/7/5 15:27
* @Description:
*/
public class TimeWindow {
@Test
public void timeWindowTest(){
SparkSession spark = SparkSession.builder().
master("local")
.appName("TimeWindow")
.getOrCreate();
List<Row> rowList = Arrays.asList(
RowFactory.create("2018-07-05 00:00:10", "ip1", "ip2"),
Row