Spark

 

一、Spark SQL定义:Spark的一个针对结构化数据操作的一个模块

  作用:
  1 用SQL或者DataFrame进行结构化数据处理在Spark的程序中
  2 可以处理任何数据源包括:Hive,Parquet,ORC,json, 和jdbc,甚至可以将这些数据进行join操作
  3 对于Hive中已经存在的数据进行查询和UDF的处理
  4 可以进行JDBC连接进行数据处理。 

 二、流程:

1 创建SparkConf
2 设置配置参数:conf.setAppName("appname").setMaster("local[*]");
3 创建JavaSparkContext
4 创建SQLContext 上下文环境 
5 通过SQLContext来读取结构化数据
6 进行DataFrame或者SQL操作来处理数据
7 stop和close打开的SQLContext

 

 三、json数据读取 

    理解DataFrame中的数据结构:

    DataFrame中包含RDD和Schema,其中RDD是它的数据,Schema是数据的结构

    Schema中是StructType->StructFiled->字段名称,类型,是否为空字段

 

	/**
	 * 读取json数据
	 * @param sqlContext
	 */
	public void testShow(SQLContext sqlContext){
		//默认读取hdfs中的文件,如果读取本地文件需要添加file:\\
		DataFrame df = sqlContext.read().json("file:\\E:\\sparktestplace\\json.txt") ;
		//DataFrame df = sqlContext.read().parquet("/examples_testr/data/resources17/part-r-00000-a3ec949c-cc17-4db6-8e73-0e0ea673af53.gz.parquet") ;
		
		df.show();
		//打印schema
		df.printSchema();
		df.select("name").show();
		df.select(df.col("name"), df.col("age").plus(1)).show();
		
		StructType st = df.schema() ;
		StructField[] sfs = st.fields();
		//打印字段的名称 和字段的类型
		System.out.println(sfs[0].name() +" "+sfs[0].dataType().typeName() );
		System.out.println(sfs[1].name() +" "+sfs[1].dataType().typeName() );
		return ;
	}

 

 

你可能感兴趣的:(Spark)