ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Flink Socket WordCount常见异常及解决方案

2020-03-23 18:54:04  阅读:362  来源: 互联网

标签:Flink Socket scala flink WordCount api apache org String


一.代码实现 

package cn.socket

import org.apache.flink.streaming.api.scala._ // 数据类型异常,动态数据引入
// import org.apache.flink.api.scala._ // 数据类型异常,静态数据引入

/**
  * Created by Administrator on 2020/3/22.
  */

object SocketWindowWordCount {
  def main(args: Array[String]) : Unit = {

    // 指定的IP和接口
    val hostname: String = "192.168.136.7"
    val port: Int = 9001

    // 获取流处理环境
    val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment

    // 获取socket计算数据
    val text: DataStream[String] = env.socketTextStream(hostname, port, '\n')

    text.print()
    // wordcount
    val windowCounts = text
      .flatMap { w => w.split("\\s") }
      .map(w => (w, 1))
      .keyBy(_._1)
      .sum(1)

    // 设置并行度,打印
    windowCounts.print().setParallelism(1)

    // 执行
    env.execute("Socket Window WordCount")
  }
}

二.常见异常

Error:(15, 16) could not find implicit value for evidence parameter of type org.apache.flink.api.common.typeinfo.TypeInformation[String]
      .flatMap { w => w.split("\\s") }
               ^
Error:(15, 16) not enough arguments for method flatMap: (implicit evidence$11: org.apache.flink.api.common.typeinfo.TypeInformation[String])
org.apache.flink.streaming.api.scala.DataStream[String]. Unspecified value parameter evidence$11. .flatMap { w => w.split("\\s") } ^

  如图:

  

  原因分析:

    在flink中的大部分算子中,并没有默认的隐式类型参数的定义,我们在使用时也没有显式地指定类型,因此会报类型异常。

三.解决方案

import org.apache.flink.streaming.api.scala._ // 数据类型异常,动态数据引入
import org.apache.flink.api.scala._ // 数据类型异常,静态数据引入

标签:Flink,Socket,scala,flink,WordCount,api,apache,org,String
来源: https://www.cnblogs.com/yszd/p/12554121.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有