准备测试数据,可以在网上寻找很容易找到,此处不提供下载。
使用Spark Sql读取csv数据,Spark.read不仅提供了读取csv,还提供的json、jdbc、file等各种来源的结构化数据。Spark Sql对各种结构化数据提供各种简单的Api,省去了我们自己通过Api读取数据的过程,
package com.mocker.rujia
import org.apache.spark.sql.{SparkSession}
object RuJiaApplication {
def main(args:Array[String]) : Unit = {
val spark = SparkSession
.builder()
.appName("rujia")
.getOrCreate();
val db = spark.read.csv("/usr/local/docker-share/rj.csv");
db.show();
}
Db.show打印查看一下数据。数据是读取出来了,但是有个问题,识别的列名为_c0,_c1,这是spark自动生成的列名,其实我们每一列都是有列名的,只是被spark当做数据给读取了,并不知道第一行数据是列名。
把代码 val db = spark.read.csv("/usr/local/docker-share/rj.csv");换成val db = spark.read.option("header","true").csv("/usr/local/docker-share/rj.csv");告诉spark我们这个文件是有头信息的,也就是列名。
现在已经成功匹配出列名。
我们还可以通过db.printSchema();获取具体的表结构信息。
网友评论