Linux中的网络工具nc和telnet
Posted Mr.zhou_Zxy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中的网络工具nc和telnet相关的知识,希望对你有一定的参考价值。
Linux中的网络工具nc和telnet
安装
[root@hadoop ~]# yum -y install nc
[root@hadoop ~]# yum -y install telnet
连接方式
[root@hadoop ~]# nc -lk
***.***.**.**
9999
[root@hadoop ~]# telnet
***.***.**.**
9999
作用
可用于模拟生产端生产数据,通过ip 和 端口进行通信
这两种不同点在于,nc是把数据推过去,telnet是生产好数据等对方来拉取
所以在代码端使用nc比较合适
例如这样的代码,在代码的接收数据
//结构流
val ds: Dataset[String] = spark.readStream.format("socket")
.option("host", "***.***.**.**")
.option("port", "9999")
.load()
.as[String]
案例
结构流WordCount
行为数据发送到kafka之后,使用Spark Strctured Streaming消费数据落地到hudi。因为Strctured Streaming是基于spark sql的流。因为它底层直接操作的DataFrame/DataSet。这个流在使用其实和spark sql差不多。 Strctured Streaming相较于spark streaming的进步,就好比是RDD到DataFrame的进步。
package hudi
import org.apache.spark.sql.streaming.OutputMode
import org.apache.spark.sql.{Dataset, SparkSession}
object StructedStreaming {
def main(args: Array[String]): Unit = {
System.setProperty("HADOOP_USER_NAME","root")
val spark: SparkSession = SparkSession.builder()
.appName("StructedStreaming")
.master("local[*]")
.config("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
.getOrCreate()
spark.sparkContext.setLogLevel("ERROR")
import spark.implicits._
val ds: Dataset[String] = spark.readStream.format("socket")
.option("host", "****.****.***.***")
.option("port", "9999")
.load()
.as[String]
val WcDs: Dataset[(String, Long)] = ds.flatMap(_.split("\\\\s+")).map((_,1)).groupByKey(_._1).count()
WcDs.writeStream.outputMode(OutputMode.Complete())
.format("console")
.start()
.awaitTermination()
}
}
以上是关于Linux中的网络工具nc和telnet的主要内容,如果未能解决你的问题,请参考以下文章