package com.yc.spark
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.sql.SQLContext
object SparkRDD07 {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("SparkDDR").setMaster("local") //使用本地环境配制
val sc = new SparkContext(conf); //创建spark上下文对象
sc.setLogLevel("error") //设置操作数据处理日志等级
//操作Spark Sql
val sqlContext = new SQLContext(sc) //创建Spark SQL 操作对象
//隐匿地将RDD转换 DataFrame
import sqlContext.implicits._
//s 实现 RDDs 与 DataFrames的互操作 park sql 通过 DataFrame类提供的接口对不同的数据源操作
//实现 RDDs 与 DataFrames的互操作
val people = sc.textFile("/data/people.txt").map(_.split(",")).map(p=>(p(0), p(1))).toDF("name", "age")
//people.createTempView("people")
people.createOrReplaceTempView("people")
val queryResult = sqlContext.sql("select * from people")
queryResult.map(t => "name:" + t(0)).collect().foreach(println) //通过下标取到名字
queryResult.map(t => "name:" + t.getAs[String]("name")).collect().foreach(println) //通过列名取到名字
queryResult.map(t => t(0) + ":" + t(1)).collect().foreach(println) //直接取出两个字段值
}
}
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.sql.SQLContext
object SparkRDD07 {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("SparkDDR").setMaster("local") //使用本地环境配制
val sc = new SparkContext(conf); //创建spark上下文对象
sc.setLogLevel("error") //设置操作数据处理日志等级
//操作Spark Sql
val sqlContext = new SQLContext(sc) //创建Spark SQL 操作对象
//隐匿地将RDD转换 DataFrame
import sqlContext.implicits._
//s 实现 RDDs 与 DataFrames的互操作 park sql 通过 DataFrame类提供的接口对不同的数据源操作
//实现 RDDs 与 DataFrames的互操作
val people = sc.textFile("/data/people.txt").map(_.split(",")).map(p=>(p(0), p(1))).toDF("name", "age")
//people.createTempView("people")
people.createOrReplaceTempView("people")
val queryResult = sqlContext.sql("select * from people")
queryResult.map(t => "name:" + t(0)).collect().foreach(println) //通过下标取到名字
queryResult.map(t => "name:" + t.getAs[String]("name")).collect().foreach(println) //通过列名取到名字
queryResult.map(t => t(0) + ":" + t(1)).collect().foreach(println) //直接取出两个字段值
}
}