2017-05-08 2 views
0

ich einen hivecontext statt SqlContext erschaffe adtaframegibt es die hivecontext von einem Datenrahmen

val conf=new SparkConf().setMaster("yarn-cluster") 
val context=new SparkContext(conf) 
//val sqlContext=new SQLContext(context) 
val hiveContext=new HiveContext(context) 
val data=Seq(1,2,3,4,5,6,7,8,9,10).map(x=>(x.toLong,x+1,x+2.toDouble)).toDF("ts","value","label") 
//outdta is a dataframe 
data.registerTempTable("df") 
//val hiveTest=hiveContext.sql("SELECT * from df where ts < percentile(BIGINT ts, 0.5)") 
val ratio1=hiveContext.sql("SELECT percentile_approx(ts, array (0.5,0.7)) from df") 

ich aus Ratio1 den genauen hive Kontext erhalten muß zu erstellen und wieder kein hivecontext aus dem povidedsql Kontext, in dem Datenrahmen erstellen Ich weiß nicht, warum Spark mir einen HiveContext von Dataframe nicht geben und es gibt nur sqlcontext.

+0

Haben Sie darüber nachgedacht, meine Antwort accpeting? –

Antwort

1

Wenn Sie HiveCOntext verwenden, dann ist die Laufzeittyp von df.sqlContext ist HiveContext (HiveContext ein Subtyp von SQLContext ist), daher können Sie tun:

val hiveContext = df.sqlContext.asInstanceOf[HiveContext] 
Verwandte Themen