小编nav*_*ige的帖子

手动更改postgresql中的查询执行计划?

是否可以在postgresql中手动更改执行计划的操作顺序?例如,如果我总是希望在过滤之前进行排序操作(尽管在正常使用postgresql时没有意义),是否可以通过例如更改操作的内部成本来手动强制执行?

如果我实现自己的功能怎么样?是否有可能始终在sql语句的最后执行这样的函数?

sql postgresql common-table-expression

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

Spark:OutOfMemory尽管MEMORY_AND_DISK_SER

我写了一些代码来读取多个镶木地板文件并将它们缓存以供后续使用.我的代码看起来像这样简化了

val data = SparkStartup.sqlContext.read.parquet(...)
data.setName(...).persist(StorageLevel.MEMORY_AND_DISK_SER).collect()
map += data
Run Code Online (Sandbox Code Playgroud)

镶木地板文件总共约11克.我配置我的应用程序:

 val sparkConfig = new SparkConf().setAppName(...).setMaster("local[128]")
sparkConfig.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
sparkConfig.set("spark.kryoserializer.buffer.max", "512m");
sparkConfig.set("spark.kryoserializer.buffer", "256");
sparkConfig.set("spark.driver.maxResultSize", "0");
sparkConfig.set("spark.driver.memory", "9g");
Run Code Online (Sandbox Code Playgroud)

我认为通过使用MEMORY_AND_DISK_SER,如果使用太多内存,Spark会溢出到磁盘.但是,我得到`java.lang.OutOfMemoryError:Java堆空间错误

at java.util.Arrays.copyOf(Arrays.java:3230)
at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113)
at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:140)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:126)
at com.esotericsoftware.kryo.io.Output.flush(Output.java:155)
at com.esotericsoftware.kryo.io.Output.require(Output.java:135)
at com.esotericsoftware.kryo.io.Output.writeAscii_slow(Output.java:446)
at com.esotericsoftware.kryo.io.Output.writeString(Output.java:306)
at com.esotericsoftware.kryo.util.DefaultClassResolver.writeName(DefaultClassResolver.java:105)
at com.esotericsoftware.kryo.util.DefaultClassResolver.writeClass(DefaultClassResolver.java:81)
at com.esotericsoftware.kryo.Kryo.writeClass(Kryo.java:472)
Run Code Online (Sandbox Code Playgroud)

为什么是这样?我开始申请-Xmx9g -Dspark.executor.memory=9g -Dspark.executor.cores=3.对于在一切崩溃之前读取的文件,我可以在SparkUI中看到,当读取到内存时,镶木地板文件的大小是其大小的9倍.

scala apache-spark

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

MongoDB从两个数组(排序和限制)计算值

我有一个存储浮点数组的MongoDB数据库。假设采用以下格式的文档集合:

{
    "id" : 0,
    "vals" : [ 0.8, 0.2, 0.5 ]
}
Run Code Online (Sandbox Code Playgroud)

有一个查询数组(例如具有values)[ 0.1, 0.3, 0.4 ],我想为集合中的所有元素计算距离(例如,差异之和;对于给定的文档和查询,将由计算abs(0.8 - 0.1) + abs(0.2 - 0.3) + abs(0.5 - 0.4) = 0.9)。

我试图使用MongoDB的聚合函数来实现这一点,但是我无法解决如何遍历数组的问题。(我没有使用MongoDB的内置geo操作,因为数组可能很长)

我还需要对结果进行排序并将其限制在前100位,因此不需要读取数据后进行计算。

mapreduce mongodb mongodb-query aggregation-framework

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

CakePHP 3:更改 dateWidget 中的顺序

我在CakePHP 开发人员指南中找到了以下关于如何在使用date表单输入时调整字段顺序的提示。它说

要控制输入的顺序以及输入之间的任何元素/内容,您可以覆盖 dateWidget 模板。

但是,我在任何地方都找不到有关如何更改顺序并在视图中使用它的提示。你能给提示吗?

cakephp cakephp-3.0

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

C:使用8位char作为完整的int

我正在尝试将char的8位转换为int的最低位.我知道从转换charint很容易通过

int var = (int) var2;
Run Code Online (Sandbox Code Playgroud)

其中var2是类型char(甚至没有put (int)).

但是我想知道,如果我编写上面的代码,那么int只是随机的剩余最高有效(32-8 =)24位还是设置为0?

例如:我们var2可以00001001,如果我写上面的代码,是var那么00000000 00000000 00000000 00001001

c bit-manipulation bit

0
推荐指数
1
解决办法
997
查看次数

Spark 2:检查节点是驱动程序还是工作者

我有一个使用 grpc 的 Spark 2 应用程序,以便客户端应用程序可以连接到它。

但是,我希望 grpc 代码仅在驱动程序节点上启动,而不是在工作节点上启动。

Spark 2 中是否有可能检查当前运行代码的节点是否是驱动程序节点?

apache-spark

0
推荐指数
1
解决办法
1450
查看次数