,spark可以定义方法吗?

用户投稿 64 0

关于“spark_mongodb_php”的问题,小编就整理了【3】个相关介绍“spark_mongodb_php”的解答:

spark可以定义方法吗?

spark可以定义包括new类,uadf类,mongodb类,scala类的方法。

public class practice {

public static void main(String[] args) {

flatMap(new FlatMapFunction() {

@Override

public void call() {

System.out.println("spark接口就是这么调用的");

}

});

}

static void flatMap(FlatMapFunction tf) {

tf.call();

}

}

interface FlatMapFunction {

void call();

}

要使用接口,就必须实现接口的方法再调用方法。

匿名内部类语法,允许我们不需要单独定义接口,而是在main方法中来实现这个过程。这使得接口实现的修改像if和for一样随意了,比如spark中的一些接口的重载方法。

所谓“内部”是指在方法内调用,”匿名”是指没有给接口的实现类具体命名。

再看看spark的java版本算子,就是用到了匿名内部类,对于没有接触过匿名内部类的人,一定搞得云里雾里。

flink为什么比spark好?

Flink相对于Spark的优点体现在以下几个方面。

容错

Flink 基于两阶段提交实现了精确的一次处理语义。

Spark Streaming 只能做到不丢数据,但是有重复。

反压

Flink 在数据传输过程中使用了分布式阻塞队列,一个阻塞队列中,当队列满了以后发送者会被天然阻塞住,这种阻塞功能相当于给这个阻塞队列提供了反压的能力。

Spark Streaming 为了实现反压这个功能,在原来的架构基础上构造了一个“速率控制器”,这个“速率控制器”会根据几个属性,如任务的结束时间、处理时长、处理消息的条数等计算一个速率。在实现控制数据的接收速率中用到了一个经典的算法,即“PID 算法”。

流和微批

Flink是流处理,用流的思想做批处理。

Spark 是微批处理,用批的思想做流处理。

延时

sparkstreaming是秒级别的

Structured Streaming是毫秒级别的

Flink是亚秒级别的

状态存储

spark的状态管理目前做的比较简单,只有两个对应的算子(UpdateStateByKey和mapWithState)

Flink 提供文件、内存、RocksDB 三种状态存储,五种类型的状态,(ValueState,ListState,ReducingState,AggregatingState,FoldingState,MapState)

谈谈mongodb,mysql的区别和具体应用场景?

官方文档看一看。

编程实例练一练。

源码看一看。

一般互联网公司多用mysql,redis,mongodb做存储层,hadoop,spark做大数据分析。

mysql适合结构化数据,类似excel表格一样定义严格的数据,用于数据量中,速度一般支持事务处理场合。

redis适合缓存内存对象,如缓存队列,用于数据量小,速度快不支持事务处理高并发场合。

mongodb,适合半结构化数据,如文本信息,用于数据量大,速度较快不支持事务处理场合。

hadoop是个生态系统,上面有大数据分析很多组件,适合事后大数据分析任务。

spark类似hadoop,偏向于内存计算,流计算,适合实时半实时大数据分析任务。

移动互联网及物联网让数据呈指数增长,NoSql大数据新起后,数据存储领域发展很快,似乎方向都是向大数据,内存计算,分布式框架,平台化发展,出现不少新的方法,如Apache Ignite适合于内存计算就集成了好多功能模快,Apache Storm、Spark、Flink也各有特点。

一般普通应用TB,GB级别达不到PB级别的数据存储,用mongodb,mysql就够了,hadoop,spark这类是航母一般多是大规模应用场景,多用于事后分析统计用,如电商的推荐系统分析系统。

到此,以上就是小编对于“spark_mongodb_php”的问题就介绍到这了,希望介绍关于“spark_mongodb_php”的【3】点解答对大家有用。

抱歉,评论功能暂时关闭!