因此,既然 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 …
所以我的任务是使用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) 这是我的代码段:
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的这个程序的解决方案。
所以我遇到了一个问题,即某段代码给了我这个错误*** 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++ ×2
apache-spark ×1
aws-lambda ×1
c ×1
fold ×1
kubernetes ×1
linux ×1
makefile ×1
python ×1
scheme ×1
winapi ×1