读取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(); } }
我也是小白以后多多交流
给你点赞
good厉害了
记住这个网站了