精华内容
下载资源
问答
  • Kafka-Steam FlatMap扁平

    2019-01-14 14:51:34
    * @Description: FlatMap 扁平化 ******************************************************************************/ public class FlatMapStreams { public static void main(String[] args) { Map, Object> ...
    package com.hyr.kafka.demo.streams.high.dsl.operator;
    
    import org.apache.kafka.common.serialization.Serdes;
    import org.apache.kafka.streams.KafkaStreams;
    import org.apache.kafka.streams.KeyValue;
    import org.apache.kafka.streams.StreamsConfig;
    import org.apache.kafka.streams.kstream.KStream;
    import org.apache.kafka.streams.kstream.KStreamBuilder;
    import org.apache.kafka.streams.kstream.KeyValueMapper;
    
    import java.util.*;
    
    /*******************************************************************************
     * @date 2017-12-28 下午 5:19
     * @author: <a href=mailto:>黄跃然</a>
     * @Description: FlatMap 扁平化
     ******************************************************************************/
    public class FlatMapStreams {
    
        public static void main(String[] args) {
            Map<String, Object> props = new HashMap<String, Object>();
            props.put(StreamsConfig.APPLICATION_ID_CONFIG, "my-stream-processing-application");
            props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "192.168.0.133:9092");
            // 制定K-V 格式
            props.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass()); // Serdes : Data Types and Serialization
            props.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass()); // Serdes : Data Types and Serialization
            StreamsConfig config = new StreamsConfig(props);
    
            KStreamBuilder builder = new KStreamBuilder();
    
            KStream<String, String> kStream = builder.stream("my-input-topic");
    
            // flatMap 将一行数据分割后,逐个输出。
            KeyValueMapper<String, String, Iterable<KeyValue<String, String>>> keyValueMapper = new KeyValueMapper<String, String, Iterable<KeyValue<String, String>>>() {
                @Override
                public Iterable<KeyValue<String, String>> apply(String key, String line) {
                    String[] split = line.split(" ");
                    List<KeyValue<String, String>> list = new ArrayList<KeyValue<String, String>>();
                    for (String s : split) {
                        KeyValue<String, String> keyValue = KeyValue.pair(s, s);
                        list.add(keyValue);
                    }
                    return list;
                }
            };
    
            KStream<String, String> stream = kStream.flatMap(keyValueMapper);
    
            stream.to("my-output-topic");
    
            KafkaStreams kafkaStreams = new KafkaStreams(builder, config);
            kafkaStreams.start();
    
        }
    
    }
    

    整个KafkaDemo项目代码已提交到Github。

    https://github.com/huangyueranbbc/KafkaDemo 

    展开全文
  • flatMap() flatMap() 方法跟flat的区别是多一个回调函数,可以用来做一些事,但是只能处理深度为1层的数组。 语法:var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) { // 返回新...

    手册地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array

    flat()

    方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。

    语法:var newArray = arr.flat([depth])

            depth 可选

                    指定要提取嵌套数组的结构深度,默认值为 1。


    flatMap()

    flatMap() 方法跟flat的区别是多一个回调函数,可以用来做一些事,但是只能处理深度为1层的数组。

    语法:var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) {

                            // 返回新数组的元素

                }[, thisArg])

            callback

                    可以生成一个新数组中的元素的函数,可以传入三个参数:

            currentValue

                    当前正在数组中处理的元素

                    index可选

                            可选的。数组中正在处理的当前元素的索引。

                    array可选

                            可选的。被调用的map数组

                    thisArg可选

                            可选的。执行callback函数时 使用的this值。


    fill()

    用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引

    语法:Array arr.fill(value[, start[, end]]); 

            参数:

                        用来填充数组元素的值。

            可选参数:

                        start 

                        起始索引,默认值为0。

                        end 

                        终止索引,默认值为 arr.length  


    展开全文
  • 学习目标遍历(foreach)使用类型推断简化函数定义使用下划线来简化函数定义映射(map)扁平化映射(flatMap)过滤(filter)排序(sort)默认排序 | sorted指定字段排序 | sortBy自定义排序 | sortWith分组(group...
  • 4. hive表数据扁平化(画像id,faid) */ val id2ffaid = rawData.flatMap(x => { val arr = x.split(splitType, -1) val mergeId = arr(0) val faid = arr(2) val strs = mergeId.split("\\|", -1) val ids = ...
    /*
    4. hive表数据扁平化(画像id,faid)
    */
    val id2ffaid = rawData.flatMap(x => {
    val arr = x.split(splitType, -1)
    val mergeId = arr(0)
    val faid = arr(2)
    val strs = mergeId.split("\\|", -1)
    val ids = strs
    
    val listBuffer = new ListBuffer[(String, String)]
    for (i <- 0 to ids.length - 1) {
      listBuffer.+=((ids(i), faid))
    }
    listBuffer
    })

     

    展开全文
  • 扁平化映射 | flatMap 定义 案例 扁平化映射 flatMap 扁平化映射也是将来用得非常多的操作,也是必须要掌握的。 定义 可以把flatMap,理解为先map,然后再flatten 就是说, 我们对待处理列表, 正常我们...

    目录

    扁平化映射 | flatMap

    定义

    案例


    扁平化映射  flatMap

    扁平化映射也是将来用得非常多的操作,也是必须要掌握的。

    定义

    可以把flatMap,理解为先map,然后再flatten

     

    就是说, 我们对待处理列表, 正常我们处理它 需要 先对其进行map操作, 然后再进行flatten操作 这样两步操作才可以得到我们想要的结果.

    如果我们有这样的需求, 我们就可以使用flatMap( 此方法帮我们实现 先map 后flatten的操作)

    • map是将列表中的元素转换为一个List
      • 这是什么意思呢? 这里是指待处理列表中的每一个元素, 都有转换成一个list的需求, 如果我们没有这样的需求, 那么其实就用不到flatMap 直接用flatten方法就行.
      • 可能大家还是有点晕, 我们向下看, 到下面具体的例子就会明白.
    • flatten再将整个列表进行扁平化

    方法签名

    def flatMap[B](f: (A) ⇒ GenTraversableOnce[B]): TraversableOnce[B]

    方法解析

    flatmap方法

    API

    说明

    泛型

    [B]

    最终要转换的集合元素类型

    参数

    f: (A) ⇒ GenTraversableOnce[B]

    传入一个函数对象<br />函数的参数是集合的元素<br />函数的返回值是一个集合

    返回值

    TraversableOnce[B]

    B类型的集合

     

    案例

    案例说明

    有一个包含了若干个文本行的列表:"hadoop hive spark flink flume", "kudu hbase sqoop storm"

    获取到文本行中的每一个单词,并将每一个单词都放到列表中

     

    思路分析

     

    步骤

    使用map将文本行拆分成数组

    再对数组进行扁平化

     

    参考代码

    // 定义文本行列表
    scala> val a = List("hadoop hive spark flink flume", "kudu hbase sqoop storm")
    a: List[String] = List(hadoop hive spark flink flume, kudu hbase sqoop storm)
    
    // 使用map将文本行转换为单词数组
    scala> a.map(x=>x.split(" "))
    res5: List[Array[String]] = List(Array(hadoop, hive, spark, flink, flume), Array(kudu, hbase, sqoop, storm))
    
    // 扁平化,将数组中的
    scala> a.map(x=>x.split(" ")).flatten
    res6: List[String] = List(hadoop, hive, spark, flink, flume, kudu, hbase, sqoop, storm)

     

     

    使用flatMap简化操作

    参考代码

    scala>  val a = List("hadoop hive spark flink flume", "kudu hbase sqoop storm")
    a: List[String] = List(hadoop hive spark flink flume, kudu hbase sqoop storm)
    
    scala> a.flatMap(_.split(" "))
    res7: List[String] = List(hadoop, hive, spark, flink, flume, kudu, hbase, sqoop, storm)

     

    展开全文
  • 使用flatmap可转换为List<String> 即把子集合的流元素放到父集合里面 为了更好的理解什么是扁平化,考虑一个像 **[“Hello”,“World”]**这样的具有“两个层次”的结构。 扁平化意味着将其转化为“一个一级”...
  • scala的函数编程-扁平化映射 | flatMap

    千次阅读 2020-02-10 09:45:35
    扁平化映射 | flatMap 扁平化映射也是将来用得非常多的操作,也是必须要掌握的。 定义 可以把flatMap,理解为先map,然后再flatten map是将列表中的元素转换为一个List flatten再将整个列表进行扁平化 方法签名 ...
  • 主要介绍了浅谈java8 stream flatMap流的扁平化操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • java8 stream flatMap流的扁平化操作

    万次阅读 2019-05-20 16:14:01
    第二种方式:flatMap(对流扁平化处理) String[] words = new String[]{"Hello","World"}; List<String> a = Arrays.stream(words) .map(word -> word.split("")) .flatMap(Arrays::stream) .distinct() ...
  • 扁平化流flatMap

    2018-09-30 15:04:54
    List<String> words = Arrays.asList("Hello", "World"); List<Integer> wordLengths = words.stream() ...一言以蔽之,flatmap方法让你把一个流中的每个值都换成另一个流,然后把所有的流连接 
  • 不同的是flatMap的函数返回的是集合,将集合中的元素依次取出放入新的RDD中。 分区中的数据不会发生变化。 函数签名 代码实现 val conf: SparkConf = new SparkConf().setAppName(this.getClass.getName)....
  • 05 集合扁平flatMap

    2016-10-27 11:46:38
    再来个复杂的遍历,你以为集合都是扁平的?连世界都不是平的。如果您觉得这套视频对您有帮助,请尽情打赏吧! ...
  • flatmap 扁平化映射: flat 即压扁,压平,扁平化,效果就是将集合中的每个元素的子元素映射到某个函数并返 回新的集合。 object FlatMapDemo01 { def main ( args : Array [ String ] ) : Unit = { ...
  • 流的扁平flatMap

    2018-09-03 20:20:00
    ... import java.util.Arrays; import java.util.List;... .flatMap(Arrays::stream) .distinct().forEach(System.out::print); } } 转载于:https://www.cnblogs.com/i-hard-working/p/9580665.html
  • 前几天看同事的代码,发现他有个地方用了java8的flatMap扁平化流来处理两个集合的交集并集。我就测了一下,是否有必要这样做。 接下来我们看一下,首先有两个实体类,第一个实体类是user类 @Data @EqualsAndHashCode...
  • java8 stream流操作的flatMap(流的扁平化)

    万次阅读 多人点赞 2018-06-26 09:45:37
    flatMap的用法和含义住要通过一个案例来讲解,案例:对给定单词列表 ["Hello","World"],你想返回列表["H","e","l","o","W","r",&...
  • idea下Kotlin的扁平化集合flatMap

    千次阅读 2017-12-04 18:56:33
    java代码的实现方式 kotlin代码的实现方式配置和java一样 ... args.flatMap { it. split ( "_" ) }. map { print ( " $it ${it. length } " )//迭代args默认值 } 效果图:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,650
精华内容 1,460
关键字:

flatmap扁平