小编Alt*_*ift的帖子

在Spark 2.4上的pyspark.sql.functions.max().over(window)上使用.where()会抛出Java异常

我在StackOverflow上发布了关于返回由另一列分组的列的最大值的帖子,并得到了一个意外的Java异常.

这是测试数据:

import pyspark.sql.functions as f
data = [('a', 5), ('a', 8), ('a', 7), ('b', 1), ('b', 3)]
df = spark.createDataFrame(data, ["A", "B"])
df.show()

+---+---+
|  A|  B|
+---+---+
|  a|  5|
|  a|  8|
|  a|  7|
|  b|  1|
|  b|  3|
+---+---+
Run Code Online (Sandbox Code Playgroud)

以下是据称适用于其他用户的解决方案:

from pyspark.sql import Window
w = Window.partitionBy('A')
df.withColumn('maxB', f.max('B').over(w))\
    .where(f.col('B') == f.col('maxB'))\
    .drop('maxB').show()
Run Code Online (Sandbox Code Playgroud)

哪个应该产生这个输出:

#+---+---+
#|  A|  B|
#+---+---+
#|  a|  8|
#|  b|  3|
#+---+---+
Run Code Online (Sandbox Code Playgroud)

相反,我得到:

java.lang.UnsupportedOperationException: Cannot evaluate expression: max(input[2, …
Run Code Online (Sandbox Code Playgroud)

exception apache-spark apache-spark-sql pyspark

5
推荐指数
1
解决办法
266
查看次数

在 SparkR 中将字符串转换为日期时间?

我有一个从 MySQL(通过 json 文件)上传到 SparkR 的正式类 DataFrame 对象,其中包含这样的格式化字符串:“2012-07-02 20:14:00”

我需要将它们转换为 SparkR 中的日期时间类型,但这似乎尚不受支持。是否有未记录的函数或使用 UDF 执行此操作的方法?(注意。我之前没有真正尝试过创建 SparkR UDF,所以我在这里抓住了稻草。)

datetime r apache-spark apache-spark-sql sparkr

2
推荐指数
1
解决办法
2115
查看次数

这个无名列表来自哪里?

我从API获取数据并使用转换JSON requests,然后从dict中的列表中的每个dict中提取一个值:

response = requests.get("http://api.open-notify.org/astros.json")
astros = response.json()
print(astros["number"])
[print(astronaut['name']) for astronaut in astros['people']]
Run Code Online (Sandbox Code Playgroud)

输出根据需要给出了名称列表,但是后面跟着6个无值的列表; 我不明白为什么.

python python-3.x

-3
推荐指数
1
解决办法
47
查看次数