spark-SQL的DataFrame和DataSet

1、如何对DataFrame中封装的数据进行操作

       方法一: 

                 sqlContext.read()      返回DataFrameReader对象
            sqlContext.read().json("student.json")     读取一个json文件(这个json文件中的内容不能是嵌套的)读进来变成DataFrame,
           df.select("age").show(),如果没有show,这个程序就不会执行,这个show就类似与Spark中Action类型的算子,触发执行
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.SQLContext;

public class TestSparkSQL {
    public static void main(String[] args) {
        SparkConf conf = new SparkConf().setAppName("DataFrameOps").setMaster("local");
        
        JavaSparkContext sc = new JavaSparkContext(conf);
        SQLContext sqlContext = new SQLContext(sc);
        
        DataFrame df = sqlContext.read().json("people.json");
        
        
        /*
         * 操作DataFrame的第一种方式
         * */
        //类似 SQL的select from table;
        df.show();
        //desc table
        df.printSchema();
        
        //select age from table;
        df.select("age").show();
        //select name from table;
        df.select("name").show();
        //select name,age+10 from table;
        df.select(df.col("name"),df.col("age").plus(10)).show();
        //select * from table where age > 20
        df.filter(df.col("age").gt(20)).show();
    }
}
通过df.show()   df.printSchema()便可以查看该df中的信息。

方法二:通过注册临时表,传入SQL语句

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.SQLContext;

public class TestSparkSQL {
    public static void main(String[] args) {
        SparkConf conf = new SparkConf().setAppName("DataFrameOps").setMaster("local");
        
        JavaSparkContext sc = new JavaSparkContext(conf);
        SQLContext sqlContext = new SQLContext(sc);
        
        DataFrame df = sqlContext.read().json("people.json");
        
        //将DataFrame中封装的数据注册为一张临时表,对临时表进行sql操作
        df.registerTempTable("people");
        DataFrame sql = sqlContext.sql("SELECT * FROM people WHERE age IS NOT NULL");
        sql.show(); 
    }
}




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值