• 【2020/2/5】寒假自学——学习进度报告12


      今天主要完成了北京市政百姓信件分析实战。


      Spark方面只是安装了Flume,以及尝试使用套接字流作为DSteam的数据源。

      启动NetCat作为套接字的监听模式,这样在端口9999就能和spark互联。

       值得一提,nc -l 9999 虽然也是适用的,-k是为了可以保持多个连接,所以应该还是必要的。

      编写DSteam代码并作为接受数据的一方。

    import findspark
    
    findspark.init()
    
    import sys
    
    from pyspark import SparkContext, SparkConf
    from pyspark.streaming import StreamingContext
    
    if __name__ == "__main__":
        if len(sys.argv) != 3:
            print("Usage: network_wordcount.py <hostname> <port>", file=sys.stderr)
            exit(-1)
        conf = SparkConf().set("spark.task.cpus", "2")
        sc = SparkContext(appName="PythonStreamingNetworkWordCount", master="spark://hadoop-master:7077", conf=conf)
        ssc = StreamingContext(sc, 1)
    
        lines = ssc.socketTextStream(sys.argv[1], int(sys.argv[2]))
        counts = lines.flatMap(lambda line: line.split(" ")) 
            .map(lambda word: (word, 1)) 
            .reduceByKey(lambda a, b: a + b)
        counts.pprint()
    
        ssc.start()
        ssc.awaitTermination()

      其中 lines = ssc.socketTextStream(sys.argv[1], int(sys.argv[2])) 为使用了启动变量,所以在设置Parameters:

      值得一提,我在代码里面加了 conf = SparkConf().set("spark.task.cpus", "2") 这么一句话,是因为在我第一次运行的时候发现程序卡在了中途的阶段,因为任务需求多个核心来处理但我默认只设置了1颗核心,所以加上这句话保险。但这样做的同时需要设置worker端的核心数量(因为我只有一个worker),只需要在spark-env.sh中加入export SPARK_WORKER_CORES=4 就可以了,核心数量视情况可以提升或减少,但为了任务正常运行需要至少2。

      运行结果:

      

       可以看到程序每秒都会监听消息。

      另外明天尝试Flume作为数据源并且把结果保存到文件系统中。

  • 相关阅读:
    RMQ的ST算法
    sublime text 3设置
    CodeForces 349B--Color the Fence(贪心)
    HDU 2859—Phalanx(DP)
    一、创建型设计模式
    前端学HTTP之网络基础
    前端工程师技能之photoshop巧用系列第五篇——雪碧图
    javascript基础语法——变量和标识符
    深入学习jQuery动画控制
    你不知道的This和Class
  • 原文地址:https://www.cnblogs.com/limitCM/p/12267110.html
Copyright © 2020-2023  润新知