我很抱歉提出关于这个一般问题的另一个问题,但我在 SO 上发现的问题似乎都与我的问题密切相关。
我有一个现有的、工作的数据流管道,它接受对象KV<Long, Iterable<TableRow>>并输出TableRow对象。这段代码在我们的生产环境中,运行没有问题。然而,我现在正在尝试使用直接运行器实现单元测试来测试此管道,但是单元测试在到达线路时失败
LinkedHashMap<String, Object> evt = (LinkedHashMap<String, Object>) row.get(Schema.EVT);
Run Code Online (Sandbox Code Playgroud)
在管道中,抛出错误消息:
java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap 无法转换为 java.util.LinkedHashMap
现有数据流代码的简化版本如下所示:
public static class Process extends DoFn<KV<Long, Iterable<TableRow>>, TableRow> {
/* private variables */
/* constructor */
/* private functions */
@ProcessElement
public void processElement(ProcessContext c) throws InterruptedException, ParseException {
EventProcessor eventProc = new EventProcessor();
Processor.WorkItem workItem = new Processor.WorkItem();
Iterator<TableRow> it = c.element().getValue().iterator();
// process all TableRows having the same id
while (it.hasNext()) {
TableRow item = it.next();
if …Run Code Online (Sandbox Code Playgroud) 假设我正在发出下面的 http 请求,以更新 mongoDB 数据库中的某些记录:
PUT
http://dev.mycompany.co/ping
{"id":4432, "name":"Jane Doe", "products":[ {"id":287}, {"id":434} ] }
请注意,上面 JSON 的“products”属性中有一个由两个对象组成的数组。我有通过 Fiddler 和我编写的 ruby 脚本以这种通用格式发送的数据。
通过 Fiddler 发送时,JSON 中的数据会被正确解析并更新到我的数据库中。当通过我的 ruby 脚本发送时,JSON 中的数据未正确解析。我一直在试图找出这是为什么。现在,我想知道当 JSON 与 http 请求一起发送时,数据实际上是如何发送的。有人能指出我正确的方向吗?
我正在使用一个名为 spdlog 的库进行日志记录。我想围绕库构建我自己的 Logger,以便我可以选择添加特定于我的应用程序的“额外”功能。
我能够让下面的代码工作:
#include <spdlog/spdlog.h>
int main()
{
spdlog::log(spdlog::level::level_enum::info, "this is an info message");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,日志级别可通过命名空间为 的枚举获得spdlog::level::level_enum。
我可能会使这个问题过于复杂,但是如果我创建自己的 Logger 类,我是否必须期望使用我的记录器的类在它们的日志记录函数调用中键入整个枚举的命名空间?
在过去的几个月里,我一直在使用 GitHub 上的 openstreetmap-tile-server(链接在这里)从 Docker 容器渲染 OSM磁贴。切片服务器使用 PostgreSQL 数据库来存储其数据。通过对创建我自己的 OSM tile 和我自己的 tile 服务器进行更多研究,很多教程都提到使用 PostgreSQL 数据库。
为什么是这样?为什么不改用像 MySQL 这样的 SQL 数据库呢?对于数据集(例如 openstreetmap 数据),使用 PostgreSQL 而不是不同的 SQL 数据库可以获得/获得什么?
编辑:编辑的问题,表明我正在将 Postgres 与其他 SQL 数据库进行比较。
作为一种简单的方法来测试拉出大型tileset的某些元素的正确方法,在我的程序中作为2D列表输入,我将以下内容放入Python Shell:
->>>test = [ [1,2,3],[4,5,6],[7,8,9] ]
Run Code Online (Sandbox Code Playgroud)
在试图测试它时,我得到了这个:
->>>test1 = test[:][2]
->>>test1
[7, 8, 9]
Run Code Online (Sandbox Code Playgroud)
从输入test[:][2]我预期的test1到返回[3,6,9]
有人可以向我解释为什么我会这样做[7,8,9]吗?
另外,如果你能解释我将如何获得输出[3,6,9]?我知道我可以说以下内容:
>>>test1 = [ test[0][2], test[1][2], test[2][2] ]
Run Code Online (Sandbox Code Playgroud)
但如果我在我的程序环境中编写它,那条线就会更长,更难维护.如果有一种[3,6,9]比我上面列出的方式更容易获得的方式,我将非常感谢有关获得它的一些见解.
我在使用git lfs从 git origin 提取代码时遇到一些问题。我们已将 git-lfs 集成到我们的存储库中,当我们发出git pull命令时,git-lfs 用于拉取存储库源代码控制中的 jar 文件。我现在尝试拉下一个分支,其中包含 jar 更改,并且收到以下错误:
Error downloading object: ourRepo/ourRepo/Jars/ourJar.jar (8b200ef): Smudge error: Error downloading ourRepo/ourRepo/Jars/ourJar.jar (8b200efda95c6d6f2672dc23b5aae0abb9e60b303705c9f65b785ef9d80691d1): LFS: Client error: https://api.media.atlassian.com/file/2897df4a-ce54-4e69-9817-910758ed6355/binary
Run Code Online (Sandbox Code Playgroud)
有没有人遇到过这个问题,解决方案是什么?
apache-beam ×1
c++ ×1
dataflow ×1
enums ×1
git ×1
git-lfs ×1
http ×1
httprequest ×1
java ×1
json ×1
list ×1
namespaces ×1
postgresql ×1
python ×1
spdlog ×1
testing ×1