如何打印PythonTransformedDStream

时间:2017-01-25 09:28:33

标签: apache-spark pyspark spark-streaming amazon-kinesis

我正在尝试运行集成AWS Kinesis流和Apache Spark的字数统计示例。随机线定期放入Kinesis。

lines = KinesisUtils.createStream(...)

当我提交申请时,lines.pprint()我看不到任何打印值。

尝试打印lines对象,我看到<pyspark.streaming.dstream.TransformedDStream object at 0x7fa235724950>

如何打印PythonTransformedDStream对象?并检查是否收到了数据。

我确定没有凭据问题,如果我使用虚假凭据,我会获得访问异常。

添加了参考代码

import sys

from pyspark import SparkContext
from pyspark.streaming import StreamingContext
from pyspark.streaming.kinesis import KinesisUtils, InitialPositionInStream

if __name__ == "__main__":
    sc = SparkContext(appName="SparkKinesisApp")
    ssc = StreamingContext(sc, 1)

    lines = KinesisUtils.createStream(ssc, "SparkKinesisApp", "myStream", "https://kinesis.us-east-1.amazonaws.com","us-east-1", InitialPositionInStream.LATEST, 2)

    # lines.saveAsTextFiles('/home/ubuntu/logs/out.txt')
    lines.pprint()

    counts = lines.flatMap(lambda line: line.split(" "))
                           .map(lambda word: (word, 1))
                           .reduceByKey(lambda a, b: a + b)

    counts.pprint()

    ssc.start()
    ssc.awaitTermination()

2 个答案:

答案 0 :(得分:2)

由于lines.pprint()没有打印任何内容,请您确认执行:

ssc.start()
ssc.awaitTermination()

如此处示例中所述:loupe

  正确配置环境后,

pprint()应该可以正常工作:

https://github.com/apache/spark/blob/v2.1.0/examples/src/main/python/streaming/network_wordcount.py

  

DStream上的输出操作

     

print() - 在运行流应用程序的驱动程序节点上打印DStream中每批数据的前十个元素。这个   对于开发和调试很有用。 Python API这叫做   Python API中的pprint()

答案 1 :(得分:2)

最后我开始工作了。

我在https://github.com/apache/spark/blob/master/external/kinesis-asl/src/main/python/examples/streaming/kinesis_wordcount_asl.py上提到的示例代码提交应用程序的命令错误。

我使用它的正确命令是

$ bin/spark-submit --jars external/spark-streaming-kinesis-asl_2.11-2.1.0.jar --packages org.apache.spark:spark-streaming-kinesis-asl_2.11:2.1.0 /home/ubuntu/my_pyspark/spark_kinesis.py