-1

我看过讨论windows函数用法的帖子。但我有一些问题。

  1. 因为它只能在 HiveContext 中使用。鉴于我已经在使用 SparkSQLContext,如何在 SparkSQLContext 和 HiveContext 之间切换?
  2. 怎么可能在这里使用 windows 功能运行 HiveQL?我试过

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

    %%hive
    SELECT col1, col2, F.rank() OVER (Window.partitionBy("col1").orderBy("col3") 
    FROM data
    

和原生 Hive SQL

SELECT col1, col2, RANK() OVER (PARTITION BY col1 ORDER BY col3) FROM data

但它们都不起作用。

4

1 回答 1

0

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

你不能。Spark 数据帧和表绑定到特定的上下文。如果您想HiveContext使用,请一直使用它。无论如何,您拖动所有依赖项。

如何在此处使用 windows 功能运行 HiveQL

sqlContext = ...  # HiveContext 
sqlContext.sql(query)

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

于 2016-03-02T02:35:04.437 回答