假如你想监听一个数据服务器上的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