小编dvi*_*vir的帖子

查询具有复杂类型的Spark SQL DataFrame

如何查询具有复杂类型(如地图/数组)的RDD?例如,当我写这个测试代码时:

case class Test(name: String, map: Map[String, String])
val map = Map("hello" -> "world", "hey" -> "there")
val map2 = Map("hello" -> "people", "hey" -> "you")
val rdd = sc.parallelize(Array(Test("first", map), Test("second", map2)))
Run Code Online (Sandbox Code Playgroud)

我虽然语法如下:

sqlContext.sql("SELECT * FROM rdd WHERE map.hello = world")
Run Code Online (Sandbox Code Playgroud)

要么

sqlContext.sql("SELECT * FROM rdd WHERE map[hello] = world")
Run Code Online (Sandbox Code Playgroud)

但我明白了

无法访问MapType类型中的嵌套字段(StringType,StringType,true)

org.apache.spark.sql.catalyst.errors.package $ TreeNodeException:未解析的属性

分别.

sql scala dataframe apache-spark apache-spark-sql

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

如何设置 sbt 以使用 java 14 预览功能

我有一个包含 Scala (2.13.1) 和 Java 文件的 sbt 项目。
\n我想使用 Java 14 编译 java 文件,包括预览功能
\n我该怎么做?

\n

按照上面的 oracle 文档,我尝试设置 javaOptions + javacOptions:

\n
javaOptions ++= Seq("--enable-preview"), // when running\njavacOptions ++= Seq("--enable-preview", "--release", "14"), // when compiling\n
Run Code Online (Sandbox Code Playgroud)\n

但是当我编译一个使用预览功能的简单 Java 文件时,例如:

\n
package example;\n\npublic record Person(String name, Integer age) {}\n
Run Code Online (Sandbox Code Playgroud)\n

我得到:

\n
\n

[错误] /Users/dvir/learn/playground/src/main/java/example/Person.java:3:15: 类型声明的非法开始
\n[错误] 公共记录 Person(字符串名称, 整数年龄) {}
\n[错误] ^

\n
\n

注意:\n我在 Mac 上使用AdoptOpenJDK 14
\n我的JAVA_HOME/Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home.
\n使用时jshell …

java scala sbt java-14

7
推荐指数
0
解决办法
425
查看次数

如何在调试模式下查看动态分配内存的值?

我正在使用eclipse和netbeans for c,我想查看在调试时在内存中动态分配的变量值(在eclipsenetbeans中).

由于某种原因,我只能看到指针本身的值,它是第一个项目.

用以下代码说明:

int foo[10];
Run Code Online (Sandbox Code Playgroud)

我可以稍后检查整个数组的值(调试时).例如,我可以在watch窗口中查看foo [7]的值.

但是这个代码:

int *bar = malloc(10*sizeof(int));
Run Code Online (Sandbox Code Playgroud)

我只能检查bar指向的位置,以及bar[0](但不是其他值)的值.

我怎样才能观察阵列的所有值?


更新:问题在eclipse和netbeans中都得到了解决.

在eclipse中:右键单击Variables窗口中的所需变量- >选择Display As Array - >填写起始索引和数组长度.

在netbeans中:在Watches窗口中添加一个具有以下格式的新手表:

*((bar)+0)@10
Run Code Online (Sandbox Code Playgroud)

这里bar应该是指针的名字, 0应该是你开始索引,并10应其长度

如果我可以添加个人的东西:这是我在stackoverflow上的第一个消息.希望你觉得它有用.

c eclipse netbeans

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

在 EMR 上使用 fat jar 进行 Spark 时覆盖配置设置

我正在编写一个 Spark 应用程序,并使用 sbt 程序集创建一个 fat jar,我可以将其发送到 Spark-submit(通过 Amazon EMR)。我的应用程序使用 typesafe-config,并reference.conf在我的resources目录中包含一个文件。我的 jar 位于 Amazon S3 上,我使用该命令aws emr add-steps..创建一个新的 Spark 作业(该作业将 jar 下载到集群并将其发送到 Spark-submit)。我知道一般来说,我可以用来application.conf覆盖设置。然而,由于我使用 Spark (和一个 fat jar),我需要某种方法来部署我的覆盖。

使用 Spark 时覆盖应用程序配置设置的推荐方法是什么?

amazon-emr typesafe-config apache-spark

4
推荐指数
1
解决办法
1456
查看次数