scala使用map()方法将输入数据按制表符进行分割,并转化成(城市,温度)的形式
时间: 2024-03-12 11:43:15 浏览: 106
假设输入数据格式为"城市\t温度",可以使用以下代码将其按制表符进行分割并转化为元组形式:
```scala
val input = "北京\t20\n上海\t25\n广州\t30"
val data = input.split("\n").map(line => {
val Array(city, temp) = line.split("\t")
(city, temp.toInt)
})
```
首先使用 `split("\n")` 方法将输入数据按行分割,得到一个字符串数组。然后使用 `map()` 方法对每一行数据进行处理,将其按制表符分割成两个部分,分别赋值给 `city` 和 `temp` 变量。最后将其转化为元组 `(city, temp.toInt)`,其中 `toInt` 方法将温度转化为整数类型。处理后的结果存储在 `data` 变量中。
相关问题
基于scala语言的sparkstreaming进行字符串分割并将结果保存至mysql案例
好的,我明白您的问题。下面是一个基于scala语言的sparkstreaming进行字符串分割并将结果保存至mysql的案例:
首先,我们需要使用Spark Streaming来实现数据流的处理。在本例中,我们将使用DStream读取Kafka主题中的数据。
import org.apache.spark.streaming._
import org.apache.spark.streaming.kafka._
import org.apache.spark.SparkConf
val conf = new SparkConf().setMaster("local[2]").setAppName("KafkaStream")
val ssc = new StreamingContext(conf, Seconds(10))
val kafkaParams = Map("metadata.broker.list" -> "localhost:9092")
val topics = Set("mytopic")
val messages = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](
ssc, kafkaParams, topics)
接下来,我们使用Spark的split()函数对收到的数据进行字符串分割,并将其保存至Mysql数据库。在这个例子中,我们使用jdbc连接器与Mysql数据库进行交互。
import java.sql.{Statement,Connection,DriverManager}
val driver = "com.mysql.jdbc.Driver"
val url = "jdbc:mysql://localhost:3306/mydatabase"
val username = "root"
val password = "welcome"
Class.forName(driver)
messages.foreachRDD(rdd => {
rdd.foreachPartition(partition => {
val conn = DriverManager.getConnection(url, username, password)
val statement = conn.createStatement()
partition.foreach(record => {
val fields = record._2.split(",")
val query = s"INSERT INTO mytable VALUES ('${fields(0)}', '${fields(1)}', '${fields(2)}')"
statement.executeUpdate(query)
})
statement.close()
conn.close()
})
})
最后,我们启动Spark Streaming的上下文并开始接收数据:
ssc.start()
ssc.awaitTermination()
这就是基于scala语言的sparkstreaming进行字符串分割并将结果保存至mysql的案例。希望对您有所帮助!
Scala中使用不同方法打印map集合的key值
除了使用`map.keys.foreach(println)`来打印map集合的key值外,还可以使用以下方法:
1. 使用for循环打印map的key值:
```scala
val map = Map("a" -> 1, "b" -> 2, "c" -> 3)
for (key <- map.keys) {
println(key)
}
```
2. 将map的key值转化为List,然后使用foreach打印:
```scala
val map = Map("a" -> 1, "b" -> 2, "c" -> 3)
map.keys.toList.foreach(println)
```
3. 使用map的keySet方法获取所有的key集合,然后使用foreach打印:
```scala
val map = Map("a" -> 1, "b" -> 2, "c" -> 3)
map.keySet.foreach(println)
```
以上三种方法都可以打印出map集合的key值,具体使用哪种方法,可以根据实际情况进行选择。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)