开发者社区> 问答> 正文

E-mapreduce中用spark streaming 读取Loghub的问题

已解决

大家好。我在测试使用E-mapreduce中的spark streaming来采集Loghub的数据时,遇到点问题。
我用Loghub监控一个文本文件,采用的是极简模式。该文本文件,每隔三秒生成一个1到10的随机数,如下图所示。
_

我修改了EMR集群提供的Loghubsample.scala去采集,batch interval设置为1秒,代码如下所示。

    loghubStream.foreachRDD { rdd =>
      val num = rdd.count()
      println("this round received: " + num + " data lines.")
      if (num > 0){
        rdd.foreach { x:Array[Byte] =>
          for (y <- x){
            println("result is "+ y)
          }
        }
      }
    }

但是现在每次打印出的并不是我想要的1到10的随机数,而是一串数字。请问这是因为我的调用方法不对吗?能否给我些帮助,感谢大家。
_

展开
收起
jimmywalker 2017-03-14 10:40:57 4428 0
3 条回答
写回答
取消 提交回答
  • 采纳回答

    后来咨询了工单的技术人员,得到了提示:先取出来rdd是一个byte对象,把它转成string,这个string是一个json对象,因为日志服务的数据是json格式的。然后用json的工具类转一下,最后取里面的key就能拿到value了。
    终于解决了问题。
    非常感谢帮助。

    2019-07-17 20:55:04
    赞同 展开评论 打赏
  • emr专业问题,可以在emr客户交钉钉流群里面讨论,响应速度会更快。
    1075534903

    2019-07-17 20:55:04
    赞同 1 展开评论 打赏
  • 你可以先去logstore看下收到的究竟是些什么内容,然后再对比下spark streaming消费到的数据。

    2019-07-17 20:55:04
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Hybrid Cloud and Apache Spark 立即下载
Scalable Deep Learning on Spark 立即下载
Comparison of Spark SQL with Hive 立即下载