当前位置: 首页 > 知识库问答 >
问题:

从dataframe获取hivecontext

夏弘文
2023-03-14

我正在创建hivecontext而不是sqlcontext来创建adtaframe

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")

我需要从ratio1中获得确切的配置单元上下文,而不是再次从dataframe中的povidedsql上下文中创建hivecontext,我不知道为什么spark不从dataframe中给我一个hivecontext,它只给SQLContext。

共有1个答案

秦俊
2023-03-14

如果您使用hivecontext,那么df.sqlcontext的运行时类型是hivecontext(hivecontextsqlcontext)的子类型,因此可以执行以下操作:

val hiveContext = df.sqlContext.asInstanceOf[HiveContext]
 类似资料:
  • 我想从数据帧中获取列标题列表。数据帧将来自用户输入,因此我不知道将有多少列或它们将被调用。 例如,如果我得到这样的DataFrame: 我会得到这样的列表:

  • 问题内容: 我想从获取列标题的列表。DataFrame来自用户输入,所以我不知道会有多少列或它们将被称为什么。 例如,如果给我这样的: 我想要一个这样的列表: 问题答案: 你可以执行以下操作以列表形式获取值: 你也可以简单地使用:(如Ed Chum的答案所示):

  • 假设我有整数0到100的数据帧。我想把这些值分为3部分,低、中、高,低小于33,高大于66,中介于33和66之间。所以我用 我得到了一个错误 我已经尝试过if-else语句和以及其他操作符。低和高起作用,但中间不起作用。 请问我能知道附近的路吗?

  • 我构造了一个从数据帧中提取一行条件: 现在我想从一个特定列中取一个值:

  • 我已经生成了<code>pyspark.sql.dataframe。DataFrame带有列名称cast和score。 但是,我想在cast列中保留唯一的名字,而不是与它们相关联的id,与_score列并排。 列中数据类型的结构如下所示 有人可以帮助我如何提取只有演员姓名和分数列的数据。 提前致谢

  • 问题内容: 我有带有take(5)最上面几行的Spark DataFrame,如下所示: 它的模式定义为: 如何从“日期”字段中获取年,月,日值? 问题答案: 从Spark 1.5开始,您可以使用许多日期处理功能: import datetime from pyspark.sql.functions import year, month, dayofmonth elevDF = sc.parall