当Spark Streaming正在运行时,不执行HBase puts,只有当我关闭Spark时 - 它才会尝试完全执行所有的放置
val inputRdd = FlumeUtils.createStream(ssc, "server", 44444)
inputRdd.foreachRDD({ rdd =>
rdd.foreachPartition(partitionOfRecords => {
val hbaseClient = new HBaseClient(zookeeper)
partitionOfRecords.foreach({ event =>
hbaseClient.put(parse(event))
hbaseClient.flush()
答案 0 :(得分:2)
好的 - 我找到了答案 - 显然我的代码是正确的,问题是我没有留下足够的线程来处理数据
这 http://spark.apache.org/docs/latest/streaming-programming-guide.html """ 如果您使用基于接收器的输入DStream(例如套接字,Kafka,Flume等),那么单线程将用于运行接收器,不留下用于处理接收数据的线程。因此,当在本地运行时,总是使用“local [n]”作为主URL,其中n>要运行的接收器数量(有关如何设置主站的信息,请参阅Spark属性)。 """
使用本地[*]修复了问题