小编Eth*_*anP的帖子

消费者没有收到消息,kafka控制台,新的消费者api,Kafka 0.9

我正在为Kafka 0.9.0.0 做Kafka Quickstart.

我有动物园管理员在听,localhost:2181因为我跑了

bin/zookeeper-server-start.sh config/zookeeper.properties
Run Code Online (Sandbox Code Playgroud)

我有一个经纪人在听,localhost:9092因为我跑了

bin/kafka-server-start.sh config/server.properties
Run Code Online (Sandbox Code Playgroud)

我有一个制作人发布主题"测试",因为我跑了

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
yello
is this thing on?
let's try another
gimme more
Run Code Online (Sandbox Code Playgroud)

当我运行旧的API使用者时,它可以通过运行来运行

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
Run Code Online (Sandbox Code Playgroud)

但是,当我运行新的API使用者时,我运行时没有得到任何东西

bin/kafka-console-consumer.sh --new-consumer --topic test --from-beginning \
    --bootstrap-server localhost:9092
Run Code Online (Sandbox Code Playgroud)

是否可以使用新的api从控制台消费者订阅主题?我该如何解决?

apache-kafka kafka-consumer-api

31
推荐指数
6
解决办法
5万
查看次数

使用json4s映射[String,Any]以压缩json字符串

我目前正在从不同的数据源中提取一些度量标准,并将它们存储在类型的映射中,Map[String,Any]其中密钥对应于度量标准名称,值对应于度量标准值.我需要这或多或少是通用的,这意味着值类型可以是基本类型或基元类型列表.

我想将此映射序列化为JSON格式的字符串,为此我使用json4s库.事情是它似乎不可能,我没有看到可能的解决方案.我希望像下面这样的东西开箱即用:)

val myMap: Map[String,Any] = ...    // extract metrics
val json = myMap.reduceLeft(_ ~ _)  // create JSON of metrics
Run Code Online (Sandbox Code Playgroud)

通过导航源代码我已经看到json4s为了变换原始类型来提供隐式转换JValue的和也将转换Traversable[A]/Map[String,A]/Option[A]JValue的(被购自的隐式转换的限制下AJValue,这是我明白它实际上意味着A是一个基本类型).该~运营商提供构建的一个很好的方式JObject的出来JField的,这仅仅是一个类型别名(String, JValue).

在这种情况下,映射值类型是Any,因此不会发生隐式转换,因此编译器会抛出以下错误:

                    value ~ is not a member of (String, Any)
[error]             val json = r.reduceLeft(_ ~ _)
Run Code Online (Sandbox Code Playgroud)

我想要完成的是什么解决方案?

scala json4s

12
推荐指数
1
解决办法
1万
查看次数

在scala中解压缩并读取gzip文件

在Scala中,如何解压缩包含的文本file.gz以便可以处理它?我很高兴将文件的内容存储在变量中,或者将其保存为本地文件,以便以后可以通过程序读入.

具体来说,我使用Scalding处理压缩日志数据,但Scalding没有定义读取它们的方法FileSource.scala.

gzip scala scalding

10
推荐指数
1
解决办法
7710
查看次数

bash 原始字符串和变量中的字符串之间的区别

我在 bash 中编写了一个小脚本,但只有当我将字符串存储为变量时它才起作用,我想知道为什么。总结如下:

当我使用字符串本身时,bash 将其视为单个实体

for word in "this is a sentence"; do
    echo $word
done
# => this is a sentence
Run Code Online (Sandbox Code Playgroud)

如果我将完全相同的字符串保存到变量中,bash 会迭代这些单词

sentence="this is a sentence"
for word in $sentence; do
    echo $word
done

# => this
# is
# a
# sentence
Run Code Online (Sandbox Code Playgroud)
  1. 为什么这些人会受到不同的对待?
  2. 有没有一种简单的方法可以迭代字符串中的单词,而无需先将字符串保存为变量?

string bash shell

4
推荐指数
1
解决办法
3万
查看次数

Finagle快速启动客户端

我有一个简单的sbt项目,我已添加"com.twitter" %% "finagle-http" % "6.33.0".我正在关注Twitter Finagle 的快速入门指南.我的代码是直接复制粘贴:

import com.twitter.finagle.{Http, Service}
import com.twitter.finagle.http
import com.twitter.util.{Await, Future}

object Client extends App {
  val client: Service[http.Request, http.Response] = Http.newService("www.scala-lang.org:80")
  val request = http.Request(http.Method.Get, "/")
  request.host = "www.scala-lang.org"
  val response: Future[http.Response] = client(request)
  response.onSuccess { resp: http.Response =>
    println("GET success: " + resp) 
    println(resp.contentString)    // modification 1
  }
  Await.ready(response)
  println("needed this")           // modification 2
}
Run Code Online (Sandbox Code Playgroud)

没有" modification 2"我根本没有输出.随着这一点println,我得到了

needed this
GET success: Response("HTTP/1.1 Status(200)")

Process finished with …
Run Code Online (Sandbox Code Playgroud)

scala http finagle twitter-finagle

3
推荐指数
1
解决办法
607
查看次数