spark2.0 用socket接收数据并处理
来源:互联网 发布:七年级英语磁带mp3淘宝 编辑:程序博客网 时间:2024/06/05 17:02
假如你想监听一个数据服务器上的TCP Socket来获取源源不断的数据流,同时你想要实时的计算单词的数量。
object SocketComplete { def main(args: Array[String]) { Logger.getLogger("org").setLevel(Level.WARN) //首先,我们需要导入必要的classes,并且创建一个本地运行的SparkSession,它是链接到Spark的程序入口。 val spark = SparkSession.builder. appName("Spark shell"). getOrCreate() import spark.implicits._ //接收数据类型是socket,IP是slave6,端口号是8008 val lines: DataFrame = spark.readStream.format("socket").option("host", "192.168.0.56").option("port", 8008).load() //这个Lines DataFrame表示了一个包含了流式数据的无边界表。此表包含一列的字符串,名字为value,数据流中的每一行变成了表中的一个Row。 // 注意,现在还没有接收任何的数据,仅仅是定义了转换操作的流程,并没有启动转换操作。 // 接下来我们使用lines.as[String]将DataFrame转换成String类型的Dataset // (注:Spark2.0中DataFrame和DataSet的API整合到了一起,DataFrame作为Dataset的一个特例存在,DataFrame=Dataset[Row]), // 因此我们可以对Dataset应用flatMap操作来分割一行数据,转化为单词的集合, // 结果集words Dataset包含了所有的单词。最终,我们通过groupingby(vlaue)将单词进行分组,然后使用count来计算它们。 // 注意,这是一个流式的DataFrame,表示了计算一个源源不断的文本数据流中单词的数量。 val words: Dataset[String] = lines.as[String].flatMap(_.split(" ")) // 结果集words Dataset包含了所有的单词。最终,我们通过groupingby(vlaue)将单词进行分组,然后使用count来计算它们。 // 注意,这是一个流式的DataFrame,表示了计算一个源源不断的文本数据流中单词的数量。 val wordCounts: DataFrame = words.groupBy("value").count() //我们将会把全量的结果打印到控制台,(结果集的输出操作有三种模式,complete mode,append mode和update mode, // 稍后会详细介绍,指定mode使用outputMode(“complete”)),每次结果集更新,都会把所有的结果都打印一次。 // 使用start()来启动流式数据计算流程。 val query: StreamingQuery = wordCounts.writeStream.outputMode("complete").format("console").start() query.awaitTermination() }}
OutPut可以定义不同的存储方式,有如下3种:1:Complete Mode – 整个更新的结果集都会写入外部存储。整张表的写入操作将由外部存储系统的连接器Connector。2:Append Mode – 当时间间隔触发时,只有在Result Table中新增加的数据行会被写入外部存储。这种方式只适用于结果集中已经存在的内容不希望发生改变的情况下,如果已经存在的数据会被更新,不适合适用此种方式。3:Update Mode – 当时间间隔触发时,只有在Result Table中被更新的数据才会被写入外部存储系统(在Spark2.0中暂时尚未可用)。注意,和Complete Mode方式的不同之处是不更新的结果集不会写入外部存储。*/
阅读全文
0 0
- spark2.0 用socket接收数据并处理
- 接收socket数据的粘包处理
- java 多线程 ThreadPoolExecutor 接收并处理数据
- Spark2.0以下读取csv数据并转化为RDD
- 通过socket接收数据并进行解析内存数据
- 异步Socket接收数据后缓存处理问题
- socket 接收数据不全
- socket 接收图片数据
- 上位机接收数据,并进行处理的一段程序
- 使用MSComm控件接收GPS数据,并进行处理
- 串口数据接收处理
- c# Socket异步接收数据
- socket接收数据不全解决方案
- JAVA中Socket数据接收
- php socket接收二进制数据
- 2,socket循环接收数据:socket循环接收大数据,问:socket异步接收数据?
- 接收ID并处理方法
- mpls接收udp并处理
- Intent 传递 数组
- Lua local function与function区别
- wtaxi
- 在Android中使用EChart
- leveldb(十):SSTable之1sstable文件的组成结构
- spark2.0 用socket接收数据并处理
- 这8点让你成为一个合格的UI设计师
- 部署自己的Yum安装源
- Spring 环绕增强
- 理解Hadoop通信 RPC
- Node.js、以及npm的个人理解
- windows环境下查看em报错OC4J Configuration issue
- java-交换值的算法
- Java网络知识点总结