1.flatMap 数据扁平化操作
val data: DataSet[String] = env.readTextFile(inputPath)
//3.对数据进行切分及其处理
val value: DataSet[String] = data.flatMap( ( _.split(",")) )
2.map 改变其数据结构
//3.对数据进行切分及其处理
val value: DataSet[(String, String)] = data.map(
d => {
val strings: Array[String] = d.split(",")
(strings(0), strings(3))
}
)
3.filter 过滤数据
val streamFilter = stream.filter{ x => x == 1}
4.keyby 根据key进行分区(DataStream → KeyedStream:逻辑地将一个流拆分成不相交的分区,每个分区包含具有相同 key 的元素,在内部以 hash 的形式实现的)
//处理数据
val sensor: DataStream[SensorReading] = sensorData.map(
data => {
val dataStr = data.split(",")
SensorReading(dataStr(0).trim, dataStr(1).trim.toLong, dataStr(2).trim.toDouble)
}
)
.keyBy("id")
5.reduce 对数据进行聚合
//KeyedStream → DataStream:一个分组数据流的聚合操作,合并当前的元素和上次聚合的结果,产//生一个新的值,返回的流中包含每一次聚合的结果,而不是只返回最后一次聚合的最终结果。
val sensor: DataStream[SensorReading] = sensorData.map(
data => {
val dataStr = data.split(",")
SensorReading(dataStr(0).trim, dataStr(1).trim.toLong, dataStr(2).trim.toDouble)
}
)
.keyBy("id")
// .sum(2)
.reduce((x , y) => SensorReading(x.id,x.timestamp+10,x.temprature+1))
6.sum()
val sensor: DataStream[SensorReading] = sensorData.map(
data => {
val dataStr = data.split(",")
SensorReading(dataStr(0).trim, dataStr(1).trim.toLong, dataStr(2).trim.toDouble)
}
)
.keyBy("id")
.sum(2)
7.Split
DataStream → SplitStream:根据某些特征把一个 DataStream 拆分成两个或者多个 DataStream。
8.Select
SplitStream→ DataStream:从一个 SplitStream 中获取一个或者多个 DataStream。
val splitStream = stream2
.split( sensorData => {
if (sensorData.temperature > 30) Seq("high") else Seq("low")
} )
val high = splitStream.select("high") val low = splitStream.select("low")
val all = splitStream.select("high", "low")