小编fla*_*zzi的帖子

将memoryview传递给C函数

我有一个C函数声明如下:

void getIndexOfState(long *p, long C, long G, long B, long *state);
Run Code Online (Sandbox Code Playgroud)

现在我的cython包装器代码使用来自numpy数组的缓冲区语法:

cpdef int getIndexOfState(self, np.ndarray[np.int_t, ndim=1, mode="c"] s):
    cdef long out
    getIndexOfState(&out, self.C, self.G, self.B, <long*> s.data)
    return out
Run Code Online (Sandbox Code Playgroud)

我想使用新的memoryview语法,我的问题是,在使用memoryview时如何将指针传递给数据?

我试过了:

cpdef int getIndexOfState(self, long[:] s):
    cdef long out
    getIndexOfState(&out, self.C, self.G, self.B, s)
    return out
Run Code Online (Sandbox Code Playgroud)

当我试图编译模块时,它引发了"无法将类型'long [:]'分配给'long*'"错误.在调用C函数之前,有没有办法传递该指针而不将内存视图强制回到numpy数组?

python numpy cython

17
推荐指数
1
解决办法
3479
查看次数

使用S3(法兰克福)和Spark

有人在使用hadoop/spark 1.6.0在法兰克福上使用s3吗?

我试图将作业的结果存储在s3上,我的依赖项声明如下:

"org.apache.spark" %% "spark-core" % "1.6.0" exclude("org.apache.hadoop", "hadoop-client"),
"org.apache.spark" %% "spark-sql" % "1.6.0",
"org.apache.hadoop" % "hadoop-client" % "2.7.2",
"org.apache.hadoop" % "hadoop-aws" % "2.7.2"
Run Code Online (Sandbox Code Playgroud)

我已设置以下配置:

System.setProperty("com.amazonaws.services.s3.enableV4", "true")
sc.hadoopConfiguration.set("fs.s3a.endpoint", ""s3.eu-central-1.amazonaws.com")
Run Code Online (Sandbox Code Playgroud)

在调用saveAsTextFile我的RDD时它启动正常,保存S3上的所有内容.但是,在从_temporary最终输出结果转移到一段时间后,它会产生错误:

Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: Status Code: 403, AWS Service: Amazon S3, AWS Request ID: XXXXXXXXXXXXXXXX, AWS Error Code: SignatureDoesNotMatch, AWS Error Message: The request signature we calculated does not match the signature you provided. Check your key and signing method., S3 Extended Request ID: …
Run Code Online (Sandbox Code Playgroud)

hadoop scala amazon-s3 apache-spark

10
推荐指数
2
解决办法
2276
查看次数

标签 统计

amazon-s3 ×1

apache-spark ×1

cython ×1

hadoop ×1

numpy ×1

python ×1

scala ×1