val rdd1=sc.textFile("/demo.txt")# 读取hdfs文件
val rdd2=rdd1.map(_.split(","))# 按,拆分字符串# case class生成封装类,仅包含属性和类型,getset方法scala自带
case class stu(sno:Int,dname:String,loc:String)
# 调用封装类stu,将拆分后的字符串转为相应类型装入
val res=rdd2.map(line=>stu(line(0).toInt,line(1),line(2)))
val df=res.toDF# 转换为DataFrames类型# (1)DSL模式查询,即DataFrames Style
df.select("dname").show# 查询列
df.printSchema# 查看表结构# (2)SQL模式查询# 实例化SQLContext装入sparkContext
val sqlctx=new org.apache.spark.sql.SQLContext(sc)
df.registerTempTable("tok")# 临时生成一张表
sqlctx.sql("select * from tok").show# SQL语句查询该表
idea中scala编程
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.SQLContext
caseclassstu(sno:Int,dname:String,loc:String)objectdemo {def main(args: Array[String]): Unit = {
var sconf=new SparkConf()
sconf.setMaster("local")
sconf.setAppName("demo")
var sc=new SparkContext(sconf)
val rdd1=sc.textFile("file:///d:/demo.txt").map(_.split(" "))
var res=rdd1.map(line=>stu(line(0).toInt,line(1),line(2)))
val sqlctx=new SQLContext(sc)
//通过sql提供的上下文对象,导入.implicits._import sqlctx.implicits._
val df=res.toDF()
df.registerTempTable("tok")
sqlctx.sql("select * from tok").show()
sc.stop()
}