小编amz*_*mza的帖子

从 Python 在 kubernetes 集群上提交 Spark (2.3)

因此,既然 k8s 在 2.3 中直接与 spark 集成,我从控制台提交的 spark 提交在 kuberenetes master 上正确执行,而没有运行任何 spark master pod,spark 处理所有 k8s 详细信息:

spark-submit \
  --deploy-mode cluster \
  --class com.app.myApp \
  --master k8s://https://myCluster.com \
  --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
  --conf spark.app.name=myApp \
  --conf spark.executor.instances=10 \
  --conf spark.kubernetes.container.image=myImage \
  local:///myJar.jar
Run Code Online (Sandbox Code Playgroud)

我想要做的是通过 AWS lambda 向我的 k8s 集群进行 spark-submit。以前我直接通过 spark master REST API 使用命令(没有 kubernetes):

request = requests.Request(
    'POST',
    "http://<master-ip>:6066/v1/submissions/create",
    data=json.dumps(parameters))
prepared = request.prepare()
session = requests.Session()
response = session.send(prepared)
Run Code Online (Sandbox Code Playgroud)

它奏效了。现在我想集成 Kubernetes 并在我从 python 向我的 kubernetes 集群提交 API 请求的情况下执行类似的操作,并让 spark …

python apache-spark kubernetes aws-lambda

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

了解Scheme中的fold-left和fold-right

所以我的任务是使用fold-left或fold-right在Scheme中实现最基本版本的'map'函数和'filter'函数.我很难理解这些功能到底在做什么.这是我有的:

(define (myMap f l)
    (fold-left (lamda (f a) (f a)) '() l))

(define (myFilter f l)
    (fold-left f '() l))
Run Code Online (Sandbox Code Playgroud)

最底层的是我直觉认为应该是的.对l的每个元素应用一个过滤器(比如数字?)并将结果放在空列表中.顶部是完全错误的,但我觉得这更像是在正确的轨道上.使用某种lambda函数将函数应用于数字?

以下是我要查找的输出示例:

(myMap sqrt '(4 9 16 25)) ; (2 3 4 5)
(myFilter odd? '(1 2 3 4 5)) ; (1 3 5)
Run Code Online (Sandbox Code Playgroud)

scheme functional-programming fold

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

没有前置'\\?\'的GetFinalPathNameByHandle()结果

这是我的代码段:

char existingTarget[MAX_PATH]; 
HANDLE hFile = CreateFile(linkPath.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (INVALID_HANDLE_VALUE != hFile)
{
    GetFinalPathNameByHandle(hFile, existingTarget, MAX_PATH, FILE_NAME_OPENED);
    CloseHandle(hFile);
}
Run Code Online (Sandbox Code Playgroud)

但是,existingTarget即将出来\\?\C:\mydir\etc。我怎样才能让它返回C:\mydir\etc呢?

:我不想来检查字符串\\?\和公正的memmove,它有点太hackish的这个程序的解决方案。

c++ winapi file-management

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

仅在打开编译器优化的情况下,某些位置的缓冲区溢出

所以我遇到了一个问题,即某段代码给了我这个错误*** BUFFER OVERFLOW DETECTED ***.一旦我打开某些编译器优化选项(这不是我的程序,所以我必须使用这些),这才开始发生.我把它缩小到了它的选择范围.我还找到了一种方法来阻止缓冲区溢出,但是,我在程序的另一部分中有非常相似的代码,当我保留它时不会给我相同的错误.这使我对我的修复非常困惑和非常不自信,所以一些指导将不胜感激.

以下是来自的优化选项 makefile

CXXFLAGS+=-Os -O2 -fomit-frame-pointer 
CXXFLAGS+=-fno-aggressive-loop-optimizations
Run Code Online (Sandbox Code Playgroud)

我把它缩小到-O2开始导致错误的标志.

这是realpath()仅在-O2指定了标志时才在缓冲区溢出时失败的函数

static std::string getRealTargetPath (std::string baseTarget)
    {
    char nextTargetLink[MAXPATHLEN];
    memset (nextTargetLink, 0, MAXPATHLEN);

    if (realpath (baseTarget.c_str(), nextTargetLink) == NULL)
        return "";
    else
       //etc...
    }
Run Code Online (Sandbox Code Playgroud)

如果我将MAXPATHLEN(大小1024)更改为PATH_MAX(大小4096),则上述函数将按预期运行.好,可以.但是,以下代码片段在使用 std::string baseTarget之前相同的代码后执行~20行.

char realLinkPath[MAXPATHLEN];
memset (realLinkPath, 0, MAXPATHLEN);

do
    {         
    if (realpath (linkPath.c_str(), realLinkPath) != NULL)
        if (strcmp(linkPath.c_str(), realLinkPath) != 0)
            return true; …
Run Code Online (Sandbox Code Playgroud)

c c++ linux makefile compiler-optimization

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