scala 相关的博客比较少,并且查询总总跳转到 spark 相关的内容,这里记录一下 scala 读取 csv 文件的操作过程(未找到合适的依赖库,自己实现同样简单)。

需要注意自己需要知道 csv 文件有几列,然后再使用 split 方法将其划分成两个对象。

import scala.collection.mutable.ArrayBuffer
import scala.io.Source
 * 读取 csv 文件
 * @param filename
def read_csv(filename: String) : Seq[(Long, Double)] = {
  val src = Source.fromFile(filename)
  val timestamp_value: ArrayBuffer[String] = ArrayBuffer()
  for (line <- src.getLines()) {
    if (line.nonEmpty && line.contains(",")) {
      timestamp_value.append(line.trim)
  // 这里已知 csv 文件只有两列。
  // 请根据实际情况设置
  // 去掉第一个并转换格式
  val series = timestamp_value.tail.map(str => {
    val pair = str.split(",")
    (formatted.parse(pair(0)).getTime, java.lang.Double.parseDouble(pair(1)))
  src.close()
  series

测试一下上面代码输出结果为:

scala 代码总体而言比较简单方便,并且可以支持 java 的部分代码,因此如果开发中遇到问题可以考虑搜索 java 如何解决,并使用 java 的解决方法解决问题,这里提供一个参考方法,scala 如何读取 csv 文件,并返回 Seq[(Long, Double)] 类型的结果。

Smileyan
2022.09.15 21:44

scala-csv 生成.sbt libraryDependencies + = " com.github.tototoshi " %% " scala-csv " % " 1.3.8 " scala > import com . github . tototoshi . csv . _ 样本.csv a,b,c d,e,f 您可以使用 CSVReader#open 创建 CSVReader 实例。 scala > val reader = CSVReader .open( new File ( " sample.csv " )) 读取所有行 scala > val reader = CSVReader .open( new File ( " sample.csv " )) reader : com.github.tototoshi.csv. CSVReade
val saveOptions = Map("header" -> "true", "path" -> "file:///F:/test.csv") df.repartition(1) .write.mode(SaveMode.Overwrite).format("csv") .options(saveOptions) .save() df.coalesce(1) .write.mode(SaveMode.Append).opti
众所周知,csv文件默认以逗号“,”分割数据,那么在scala命令行里查询的数据: 可以看见,字段里就包含了逗号“,”,那接下来切割的时候,这本应该作为一个整体的字段会以逗号“,”为界限进行切割为多个字段。 现在来看看这里的_c0字段一共有多少行记录。 记住这个数字:60351行 写scala代码读取csv文件并以逗号为分隔符来分割字段 val lineRDD = sc.textFile("xxxx/xxx.csv").map(_.split(",")) 这里只读取了_c0一个字段,否则会报数组下标越
/** * 通过CSV文件,及其预处理的字段类型字符串,输出insert语句 */ class csv2InsertSQLServer { /** * @param CLASS_PATH 输入/输出路径 * @param inFilename 输入文件名 * @param tableN...
import org.apache.spark.SparkConf import org.apache.spark.sql.SparkSession import org.apache.spark.sql.functions._ object Dataframe_demo_01 { case class student11(name: String, course: String, score: String) def main(args: Array[String]): Unit = {
spark读取csv文件——scala 下面介绍如何通过scala读取csv文件 读取的过程是首先按照普通额文本文件进行读取,然后通过opencsv的jar包进行转换,通过对每行进行读取,生成string数组。 好,下面上货。 import java.io.StringReader import au.com.bytecode.opencsv.CSVReader object CC{
最近的业务场景中,spark要读取 1个30G的 csv文件,生成RDD后做运算,光这一个 parse 就用了1个半小时,太慢了,后来请大佬帮我优化,我们统计时间发现 ,spark 读取这个csv 竟然用了 30分钟,太慢了。而且后面跑运算的时候,一直是3个分区在跑,我们推测读取文件的时候 partition 少了。 关于spark 优化,网上有很多,我这里只把我这次的优化记录下来 ,希望能帮助新人。 老的读取csv,生成RDD的代码如下(这一部分读取文件生成RDD就用了30分钟): val csv
Spark使用Java读取mysql数据和保存数据到mysql一、pom.xml二、spark代码2.1 Java方式2.2 Scala方式三、写入数据到mysql中部分博文原文信息 一、pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"...
Scala 的集合分为三大类序列Seq,集Set 以及映射Map。所有的集合都扩展自 Iterable 特质在 Scala 中集合有可变(“scala.collection.mutable” 包下存放)和不可变(“scala.collection.immutable” 包下存放)两种类型。