DateFrame

首页 » Spark » DateFrame

读取json格式的RDD加载成DateFrame

DateFrame 有数据,有列的schema
sqlContext读取json文件加载成DateFrame ,DateFrame中列会按照Ascii码进行排序

直接写sql ,查询出来的dateFrame会按照指定的列进行查询

不能读取嵌套的json格式

package spark;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.VoidFunction;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SQLContext;

public class SQl {
public static void main(String[] args) {
 SparkConf conf = new SparkConf();
 conf.setMaster("local").setAppName("sql");
 JavaSparkContext sc = new JavaSparkContext(conf);
 
 //创建DateFrame
 SQLContext sqlcontext = new SQLContext(sc);
 
 DataFrame df=sqlcontext.read().format("json").load("json");

 
 df.show();

 
 //select name,age from xxx where age>18
 df.select("name","age").where(df.col("age").gt(18)).show();
 

 /*
  * 将DateFrame注册成临时表,使用sql进行查询
  * t1这张表,不在内存中也不在磁盘中,相当于一个指针指向源文件,底册操作解析spark job读取源文件
  */
 df.registerTempTable("t1");
 sqlcontext.sql("select * from t1 where age > 18").show();
 
 
 //DateFrame转RDD
 JavaRDD<Row> javaRDD =df.javaRDD();
 javaRDD.foreach(new VoidFunction<Row>() {

  @Override
  public void call(Row arg0) throws Exception {
   // TODO Auto-generated method stub
   System.out.println(arg0.get(0));
  }
 
 });
 
 
 
 sc.stop();
}
}
分享到:
赞(0) 打赏

评论 4

评论前必须登录!

 

  1. #1

    我也是小白以后多多交流

    我也是渣渣8个月前 (03-28)
  2. #2

    给你点赞

    奋斗8个月前 (03-28)
  3. #3

    good厉害了

    沥青8个月前 (03-28)
  4. #4

    记住这个网站了

    我是你哥8个月前 (03-29)

觉得文章有用就打赏一下弟弟吧

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.5主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
正在播放:

作者想对您说:

累了就停下来听首歌吧

听完后会给您一个好心情

最后

等到您不容易

还希望您能多待一会儿

      00:00/00:00