合并元数据:两个数据集,有着一部分相同的列,将他们合并成一个数据集时merge的过程。
合并的规则:相同的列,在新的数据集中,是通用的列,
各自不同的列,也作为新的数据集的列。
Spark将数据写入到HDFS中的parquet为例:
准备连个json文件(StudentInfo1.json,StudentInfo2.json),上传到HDFS中:
spark程序代码如下:
SparkConf conf = new SparkConf()
.setAppName("MergeSchema");//.setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);
SQLContext sqlContext = new SQLContext(sc);
DataFrame studentInfo1 = sqlContext.read().format("json").load("hdfs://spark1:9000/StudentInfo1.json");
studentInfo1.write().mode(SaveMode.Append).save("hdfs://spark1:9000/StudentInfo.parquet");
DataFrame studentInfo2 = sqlContext.read().format("json").load("hdfs://spark1:9000/StudentInfo2.json");
studentInfo2.write().mode(SaveMode.Append).save("hdfs://spark1:9000/StudentInfo.parquet");
DataFrame studentInfo =sqlContext.read().option("mergeSchema", "true")
.parquet("hdfs://spark1:9000/StudentInfo.parquet");
studentInfo.printSchema();
studentInfo.show();
}
运行后的输出为: