【发布时间】:2017-11-15 00:56:31
【问题描述】:
我正在尝试从 Kafka 读取数据并通过 Spark RDD 将数据存储到 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"))
【问题讨论】:
-
@RameshMaharjan:请不要将专有名词格式化为代码。 Kafka 和 Cassandra 只需要初始资金,仅此而已——它们本身并不是代码。但是,
spark-shell之类的内容是可以的,因为代码格式适用于控制台 I/O(假设spark-shell是键入的命令)。
标签: scala apache-spark apache-kafka spark-streaming spark-submit