小编Mic*_*hał的帖子

如何在gradle中将命令行参数传递给主类?

我正在创建简单的Java类,我想通过使用gradle创建开箱即用的启动器.

所以我希望能够通过gradle运行Java程序:

gradlew clean run These are my command line arguments哪里These are my command line arguments直接传递给我的public static void main(String... args)方法.

我正在使用apply plugin: "application"它给了我run任务.但当我按照'原样'运行时,我得到了:

* What went wrong: Task 'These' not found in root project 'question1'. Some candidates are: 'test'.

java gradle

8
推荐指数
1
解决办法
7099
查看次数

如何处理具有大量边的顶点?

在我们的图中,有很多顶点的输出边超过 100k。我想知道处理由此产生的所有情况的方法是什么。

假设我们group_1在图中定义了一个。group_1有 100k members。我们有一些从member_x顶点开始的遍历并计算一些东西。这些遍历非常快,每次都在大约 2 秒内结束。

但是时代变了,现在我们需要将单个小遍历的所有结果汇总为一个数字。遍历必须包含来自group_1's 成员的所有结果。

最初,我们的方法是创建其发射一束遍历members_x通过使用skiplimit,然后,在应用层上采用并行处理,计数的我们的东西的总和。但是,这种方法几乎没有问题:

  • g.V().has('group',y).out('member_of').skip(0).limit(10)- 根据文档,这种遍历每次可以返回不同的结果。所以以这种方式创建包是不正确的
  • g.V().has('group',y).out('member_of').skip(100_000).limit(10) 花费太长时间,因为正如我们发现的那样,数据库仍然需要访问 100k 个顶点

因此,我们的下一个方法是存储一个遍历,该遍历会发出束,members然后在单独的线程中执行并行遍历,这些遍历对先前获取的成员进行计数:

while(is_not_the_end) {
   List<Members> members = g.V().has('group',y).out('member_of').next(100)`
   addMembersToExecutorThread(members) // done in async way
}
Run Code Online (Sandbox Code Playgroud)

那么,当你遇到这样的场景时,有什么方法呢?基本上,如果可以找到一种方法来快速获取某个顶点的所有祖先,我们就可以解决该问题。在我们的例子中,这将是一个group_1. 但是仅仅通过使用g.V().has('group',y).out('member_of').properties('members_id').

有没有办法解决这个问题?或者我们应该尝试在 GraphComputer 上执行这样的查询?

gremlin tinkerpop tinkerpop3 gremlin-server janusgraph

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

使用 fastavro 从 Kafka 反序列化 Avro

我正在构建一个从 Kafka 接收数据的应用程序。使用 Apache ( https://pypi.org/project/avro-python3/ )提供的标准 avro 库时,结果是正确的,但是,反序列化过程非常缓慢。

class KafkaReceiver:
    data = {}

    def __init__(self, bootstrap='192.168.1.111:9092'):
        self.client = KafkaConsumer(
            'topic',
            bootstrap_servers=bootstrap,
            client_id='app',
            api_version=(0, 10, 1)
        )
        self.schema = avro.schema.parse(open("Schema.avsc", "rb").read())
        self.reader = avro.io.DatumReader(self.schema)

    def do(self):
        for msg in self.client:
            bytes_reader = io.BytesIO(msg.value)
            decoder = BinaryDecoder(bytes_reader)

            self.data = self.reader.read(decoder)
Run Code Online (Sandbox Code Playgroud)

在阅读为什么这么慢时,我发现fastavro哪个应该快得多。我是这样使用的:

    def do(self):

        schema = fastavro.schema.load_schema('Schema.avsc')
        for msg in self.client:
            bytes_reader = io.BytesIO(msg.value)
            bytes_reader.seek(0)
            for record in reader(bytes_reader, schema):
                self.data = record
Run Code Online (Sandbox Code Playgroud)

而且,由于在使用 Apache 的库时一切正常,我希望一切都将与fastavro. 但是,在运行它时,我得到

  File …
Run Code Online (Sandbox Code Playgroud)

python avro apache-kafka fastavro

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

如何检查作业为何在 Google Dataflow 上被终止(可能 OOM)

我有一个简单的任务。我有一堆文件( ~100GB in total ),每一行代表一个实体。我必须将此实体发送到 JanusGraph 服务器。

2018-07-07_05_10_46-8497016571919684639 <- job id
Run Code Online (Sandbox Code Playgroud)

一段时间后,我遇到 OOM,日志显示 Java 被杀死。

从数据流视图中,我可以看到以下日志:

Workflow failed. Causes: S01:TextIO.Read/Read+ParDo(Anonymous)+ParDo(JanusVertexConsumer) failed., A work item was attempted 4 times without success. Each time the worker eventually lost contact with the service. The work item was attempted on:

从堆栈驱动程序视图中,我可以看到: https: //www.dropbox.com/s/zvny7qwhl7hbwyw/Screenshot%202018-07-08%2010.05.33.png ?dl=0

日志显示: E Out of memory: Kill process 1180 (java) score 1100 or sacrifice child E Killed process 1180 (java) total-vm:4838044kB, anon-rss:383132kB, file-rss:0kB 更多信息请参见:https ://pastebin.com/raw/MftBwUxs

我怎样才能调试发生了什么?

java google-cloud-dataflow tinkerpop3 apache-beam janusgraph

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