gpt4 book ai didi

scala - 值拆分不是 (String, String) 的成员

转载 作者:行者123 更新时间:2023-12-01 11:20:24 24 4
gpt4 key购买 nike

我正在尝试通过 Spark RDD 从 Kafka 读取数据并存储到 Cassandra 表中。

编译代码时出现错误:

/root/cassandra-count/src/main/scala/KafkaSparkCassandra.scala:69: value split is not a member of (String, String)

[error] val lines = messages.flatMap(line => line.split(',')).map(s => (s(0).toString, s(1).toDouble,s(2).toDouble,s(3).toDouble))
[error] ^
[error] one error found

[error] (compile:compileIncremental) Compilation failed

下面的代码:当我通过交互式 spark-shell 手动运行代码时,它工作正常,但是在为 spark-submit 编译代码时出现错误。

// Create direct kafka stream with brokers and topics
val topicsSet = Set[String] (kafka_topic)
val kafkaParams = Map[String, String]("metadata.broker.list" -> kafka_broker)
val messages = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder]( ssc, kafkaParams, topicsSet)

// Create the processing logic
// Get the lines, split
val lines = messages.map(line => line.split(',')).map(s => (s(0).toString, s(1).toDouble,s(2).toDouble,s(3).toDouble))
lines.saveToCassandra("stream_poc", "US_city", SomeColumns("city_name", "jan_temp", "lat", "long"))

最佳答案

kafka 中的所有消息都是有键的。原始的 Kafka 流,在本例中为 messages,是一个元组流 (key,value)

正如编译错误指出的那样,元组上没有 split 方法。

我们在这里要做的是:

messages.map{ case (key, value)  => value.split(','))} ...

关于scala - 值拆分不是 (String, String) 的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44518232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com