Apache spark 如何在spark的HiveQL中应用Windows函数

Apache spark 如何在spark的HiveQL中应用Windows函数,apache-spark,pyspark,apache-spark-sql,hivecontext,Apache Spark,Pyspark,Apache Spark Sql,Hivecontext,我看到过讨论这个问题的帖子。但我有一些问题 由于是,因此只能在HiveContext中使用。如果我已经在使用SparkSQLContext,如何在SparkSQLContext和HiveContext之间切换 如何在此处使用windows函数运行HiveQL?我试过了 df.registerTempTable("data") from pyspark.sql import functions as F from pyspark.sql import Window 和本机配置单元SQL SE

我看到过讨论这个问题的帖子。但我有一些问题

  • 由于是,因此只能在HiveContext中使用。如果我已经在使用SparkSQLContext,如何在SparkSQLContext和HiveContext之间切换
  • 如何在此处使用windows函数运行HiveQL?我试过了

    df.registerTempTable("data")
    from pyspark.sql import functions as F
    from pyspark.sql import Window
    

  • 和本机配置单元SQL

    SELECT col1, col2, RANK() OVER (PARTITION BY col1 ORDER BY col3) FROM data
    
    但两者都不起作用

    如果我已经在使用SparkSQLContext,如何在SparkSQLContext和HiveContext之间切换

    你不能。Spark数据帧和表绑定到特定上下文。如果要使用
    HiveContext
    ,请一直使用它。您仍然可以拖动所有依赖项

    如何在此处使用windows函数运行HiveQL


    您使用的第一个查询完全无效。如果您使用正确的上下文和配置,第二个应该可以使用。

    谢谢!我正在使用HDInsight Spark,他们的内核将启动HiveContext和SparkContext。所以我想我可以在那里运行Windows功能。另外,是否可以在spark数据帧上运行HiveQL?不完全是这样。您可以注册表并使用
    sqlContext.sql
    ,但Spark与HiveQL不完全兼容。通常情况下,这并不重要。谢谢!但在sqlcontext中是否也可以运行类似的windows函数呢?不,目前还没有
    SELECT col1, col2, RANK() OVER (PARTITION BY col1 ORDER BY col3) FROM data
    
    sqlContext = ...  # HiveContext 
    sqlContext.sql(query)