第61课:Spark SQL数据加载和保存内幕深度解密实战

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/someby/article/details/83515318

内容:

    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:    [email protected]
 * 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);

    


 

猜你喜欢

转载自blog.csdn.net/someby/article/details/83515318