使用https://stackoverflow.com/a/32407543/5379015中提供的解决方案,我尝试重新创建相同的查询,但使用编程语法代替dataframe
API,如下所示:
import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.sql.hive.HiveContext
import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions._
object HiveContextTest {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("HiveContextTest")
val sc = new SparkContext(conf)
val sqlContext = new HiveContext(sc)
import sqlContext.implicits._
val df = sc.parallelize(
("foo", 1) :: ("foo", 2) :: ("bar", 1) :: ("bar", 2) :: Nil
).toDF("k", "v")
// using dataframe api works fine
val w = Window.partitionBy($"k").orderBy($"v")
df.select($"k",$"v", rowNumber().over(w).alias("rn")).show
//using programmatic syntax doesn't work
df.registerTempTable("df")
val w2 = sqlContext.sql("select k,v,rowNumber() over (partition by k order by v) as rn from df")
w2.show()
}
}
第一个df.select($“k”,$“v”,rowNumber().over(w).alias(“rn”)).show
工作正常,但是w2.show()
结果是
Exception in thread "main" org.apache.spark.sql.AnalysisException: Couldn't find window function rowNumber;
rownumber
的SQL等效项是row_number
:
SELECT k, v, row_number() OVER (PARTITION BY k ORDER BY v) AS rn FROM df
我在Scala中查看幻灯片函数中的Spark。
我正在运行一个selenium-webdriver javascript scraper,它登录到一个站点并单击一个按钮来启动一个新的选项卡/窗口。我正试图切换驱动程序以关注新生成的窗口,但Selenium找不到它。我要看的代码: 它是原始的浏览器窗口。是什么原因导致硒不能在新窗口上出现?
问题内容: 我正在使用Selenium WebDriver来自动化我的公司站点。一方面,Web应用程序通过以下方式打开一个新窗口: 我们正在使用jQuery,尽管我认为这是自定义的。我在测试团队中,不做任何网站开发。无论如何,它使用JavaScript打开一个新窗口。脚本单击此链接后,我需要它附加到新窗口。 问题在于,在IE9中运行时,WebDriver似乎找不到新窗口。这是我用来尝试切换到新窗口
我正在与Selenium WebDriver自动化我的公司网站。有一次,Web应用程序通过以下方式打开一个新窗口: 我们正在使用jQuery,尽管我认为这是定制的。我是测试团队的成员,不做任何网站的开发工作。无论如何,它使用JavaScript打开一个新窗口。脚本单击此链接后,我需要将其附加到新窗口。 问题是WebDriver在IE9中运行时似乎找不到新窗口。下面是我用来尝试切换到新窗口的代码:
所以我正在学习Selenium用于Java的测试自动化,我有一个错误消息,比如IntelliJ中的标题“windows()”是红色的。 我试图导入org.openqa.selenium.WebDriver。选项,但它是灰色的,所以没用。 我能做些什么来解决这个问题? 提前谢谢