1、装载CSV数据源
文件预览
使用sparksession方法
val conf = new SparkConf().setMaster("local[2]").setAppName("Demo")
val session = SparkSession.builder().config(conf).getOrCreate() //固定格式,写死的方法
val df = session.read.format("csv").option("header", "true").
load("D:\\360Downloads\\scala\\users.csv")
//format后写文件格式,header写死,true时结果正常输出列名,如果为false,输出为c1,c2,c3....
df.printSchema()
df.select("gender","locale").show(5)
//修改列名
val frame = df.withColumnRenamed("gender","sex")
frame.printSchema()
frame.show(5)
//修改列的类型
val frame3 = df.withColumn("local",df.col("locale").cast("int"))
frame3.printSchema()
2.装载JSON数据源
文件预览
使用sparksession方法
val spark = SparkSession.builder().config(sparkConf).getOrCreate()
val df = spark.read.format("json").option("header", "true").
//true时,打印时会有对应的列名称,改为false,没有行头,只有c1,c2,c3.....
load("D:\\360Downloads\\scala\\users.json")
println("******")
df.printSchema()
//修改列名
val df2 = df.withColumnRenamed("Age","age")
df2.printSchema()
println("-------")
df2.select("age","name").show()
//修改列数据类型,long->int
val df3 = df.withColumn("age", df.col("Age").cast("int"))
println(".............")
df3.printSchema()
//修改数据类型,String->int,结果是打印不出来,值为null
val df4 = df.withColumn("name",df.col("Name").cast("int"))
df4.printSchema()
df4.show()
//修改数据值
val df5 = df.withColumn("age", df.col("Age")+5)//添加数据,会加上
.withColumn("name1",df.col("name")+"hello") //后面添加数据,会变null
df5.show()