在hdfs上存储一个sql文件
cust.txt:
1,smith,12
2,bob,13
3,alex,14
4,alice,15
6,mike,26
1.将DataFrame转换为json数据格式
import org.apache.spark
import org.apache.spark.sql.SparkSession
/**
* 将数据框保存成json数据
*/
object SparkSqlWriterJson {
def main(args: Array[String]) :Unit={
val spark=SparkSession.builder().appName("sparkSQL").master("local[*]").enableHiveSupport().getOrCreate()
val rdd1=spark.sparkContext.textFile("/user/hadoop/data2/cust.txt")
import spark.implicits._
val df1=rdd1.map(line=>{
val arr=line.split(",")
(arr(0).toInt,arr(1),arr(2).toInt)
}).toDF("id","name","age")
//控制台打印数据
df1.show(1000,false)
//将id>2的结果输出到g:/json目录下
df1.where("id>2").write.json("file:///g:/json")
}
}
保存的json数据格式如下:
分别打开两个文件:
part-00000-1e0bd14c-8a81-4e06-bcd0-e0775a0c039c-c000.json:
{"id":3,"name":"alex","age":14}
part-00001-1e0bd14c-8a81-4e06-bcd0-e0775a0c039c-c000.json:
{"id":4,"name":"alice","age":15}
{"id":6,"name":"mike","age":26}
2.将json数据转换成DataFrame
import org.apache.spark.sql.SparkSession
/**
* 将json数据转换成DataFrame
*/
object SparkSqlReaderJson {
def main(args: Array[String]):Unit= {
val spark=SparkSession.builder().appName("sparkSQL").master("local[*]").enableHiveSupport().getOrCreate()
//读取g:/json目录下的json数据
val df1=spark.read.json("file:///g:/json")
//打印
df1.show(1000,false)
}
}
控制台显示的数据为:
具体的Idea的spark sql环境搭建配置参看我前面的spark sql文章:
spark sql 在scala与java中的代码实现: https://blog.csdn.net/nengyu/article/details/95870479