我是 Scala 的新手。我想在 Scala 中解析 JSON 数据。
我想循环这些数据,并在每次迭代中为id,v,q和t从值中提取数据
我正在使用以下代码将其解析为 JSON
import scala.util.parsing.json._
val data =
"""
{
"timestamp":
1518501114949
, "values":
[
{
"id":
"abc"
, "v":
0
, "q":
true
, "t":
1518501114487
}
,
{
"id":
"xyz"
, "v":
15
, "q":
true
, "t":
1518501114494
}
]
}
"""
val parsed = JSON.parseFull(data)
Run Code Online (Sandbox Code Playgroud)
我得到如下输出
Some(Map(timestamp -> 1.518501114949E12, values -> List(Map(id -> abc, v -> 0.0, q -> true, t -> 1.518501114487E12), Map(id -> …Run Code Online (Sandbox Code Playgroud) 使用多个动态聚合操作在 Spark 数据帧上聚合。
我想使用具有多个动态聚合操作(由用户在 JSON 中传递)的 Scala 对 Spark 数据帧进行聚合。我正在将 JSON 转换为Map.
下面是一些示例数据:
colA colB colC colD
1 2 3 4
5 6 7 8
9 10 11 12
Run Code Online (Sandbox Code Playgroud)
我正在使用的 Spark 聚合代码:
var cols = ["colA","colB"]
var aggFuncMap = Map("colC"-> "sum", "colD"-> "countDistinct")
var aggregatedDF = currentDF.groupBy(cols.head, cols.tail: _*).agg(aggFuncMap)
Run Code Online (Sandbox Code Playgroud)
我要通过aggFuncMap作为Map唯一的,以使得用户可以通过JSON配置传递任意数量聚合的。
上面的代码工作正常了一些聚集,其中包括sum,min,max,avg和count。
但是,不幸的是,此代码不适用于countDistinct(可能是因为它是驼峰式的?)。
运行上述代码时,我收到此错误:
线程“main”org.apache.spark.sql.AnalysisException 中的异常:未定义的函数:'countdistinct'。此函数既不是注册的临时函数,也不是在数据库“default”中注册的永久函数
任何帮助将不胜感激!
我将 AWS 与(基本支持计划)一起使用。我想知道 AWS 粘合作业中使用了哪个版本的 Spark 和 Hadoop (HDFS)。这样我就可以在本地机器上设置相同的环境进行开发。
或者,如果我了解 Spark 的版本,则对应 AWS 粘合作业使用的 Hadoop 版本,反之亦然。
因为我正在使用基本支持计划。所以,我不能向支持中心提出案例。知道在哪里可以检查 AWS 胶水作业... Spark 和 Hadoop 版本吗?
任何形式的帮助和建议表示赞赏。谢谢!
hadoop amazon-web-services apache-spark aws-glue aws-glue-data-catalog