合並元數據:兩個數據集,有着一部分相同的列,將他們合並成一個數據集時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();
}
運行后的輸出為: