我有两个文件emp1和emp2。
emp1:
101,aaa,30000,m,11
102,bbbb,40000,f,12
103,cc,60000,m,12
104,dd,80000,f,11
105,cccc,90000,m,12
emp2:
201,dk,90000,m,11
202,mm,100000,f,12
203,mmmx,80000,m,12
204,vbvb,70000,f,11
之后我创建了一个case类来为emp1和emp2提供模式。
case class Emp(id:Int, name:String,
sal:Int, sex:String, dno:Int)
然后我定义了一个函数toEmp:
def toEmp(x:String) = {
val w = x.split(",")
Emp(w(0).toInt,
w(1), w(2).toInt,
w(3), w(4).toInt)
}
val e1 = emp1.map(x => toEmp(x))
val e2 = emp2.map(x => toEmp(x))
val df1 = e1.toDF
val df2 = e2.toDF
df1.registerTempTable("df1")
df2.registerTempTable("df2")
val df = sqlContext.sql("select * from
df1 union all select * from df2")
df.registerTempTable("df")
val res = HiveContext.sql("select sex,sum(sal) as tot, count(*) as cnt
from df group by sex")
我在这里得到错误。任何人都可以帮助我如何使用HiveContext生成由sqlContext生成的数据框?