内容:
1.SparkSQL加载数据
2.SparkSQL保存数据
3.SparkSQL对数据处理的思考
一、SparkSQL加载数据
1.SQLContext中有load方法,实际上也就是使用了DataFrameReader的load方法。目前的Spark 1.6.0中,虽然SQLContext还有load方法,但已被设置为@deprecated。也就是说在Spark 2.0中SQLContext可能不再使用load方法。
2.DataFrameReader用来从外部存储系统(比如:文件系统,键值存储库,等等)读取数据,并返回DataFrame对象。
3.DataFrameReader有format方法,用来设置输入数据源的格式。
4.DataFrameReader用load方法,把外部数据加载进来,变成一个DataFrame
二、Spark SQL保存数据
1.DataFrame中有各种save方法,实际上也就是使用了DataFrameWriter的save方法。
2.目前的Spark 1.6.0中虽然DataFrame还有save方法,但已被设置为@deprecated。也就是说在Spark 2.0中DataFrame可能不再使用save方法。用以下程序SparkSQLLoadSaveOps.Java来演示Spark SQL 对数据的读取和保存
代码示例:
package SparkSQL;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.SQLContext;
import org.apache.spark.sql.SaveMode;
/**
* FileName: SparkSQLLoadSaveOps
* Author: hadoop
* Email: 3165845957@qq.com
* Date: 18-10-29 下午8:18
* Description:
*/
public class SparkSQLLoadSaveOps {
public static void main(String[] args){
//创建SparkConf用于读取系统信息并设置运用程序的名称
SparkConf conf = new SparkConf().setAppName("RDDToDataFrameByReflection").setMaster("local");
//创建JavaSparkContext对象实例作为整个Driver的核心基石
JavaSparkContext sc = new JavaSparkContext(conf);
//设置输出log的等级,可以设置INFO,WARN,ERROR
sc.setLogLevel("ERROR");
//创建SQLContext上下文对象,用于SqL的分析
SQLContext sqlContext = new SQLContext(sc);
Dataset peopleDS = sqlContext.read().format("json").load("/usr/local/spark/examples/src/main/resources/people.json");
String savePath = "/home/hadoop/peopleName.json";
//peopleDS.select("name").write().format("json").save(savePath);
peopleDS.select("name").write().format("json").mode(SaveMode.Append).save(savePath);