从Apache Beam API使用RedisIO时获取“没有MULTI的ERR EXEC”。

时间:2018-09-10 21:32:47

标签: redis google-cloud-dataflow apache-beam

我正在从BigQuery读取数据,并使用来自Apache Beam API的RedisIO写入Redis。下面是代码片段。

pipeline.apply("Read Data From BigQuery",
        BigQueryIO.readTableRows().withoutValidation()
            .fromQuery(""))
    .apply("Convert Table rows into Redis Entity",
        ParDo.of(new RedisEntity()))
    .apply("Write to Redis",
        RedisIO.write().withEndpoint("localhost", 6379));

当尝试执行代码时,我得到2,000条用Redis编写的记录,此后出现以下错误。

  

redis.clients.jedis.exceptions.JedisDataException:不带MULTI的EXEC       在redis.clients.jedis.Pipeline.exec(Pipeline.java:139)       在org.apache.beam.sdk.io.redis.RedisIO $ Write $ WriteFn.processElement(RedisIO.java:419)

请告知我是否缺少某些东西,或者是否有更好的方法。

1 个答案:

答案 0 :(得分:2)

好像是RedisIO中的错误,我已向Beam提交了一个问题,并提出了拉取请求以对其进行修复。看看我是否猜对了。 issue.apache.org/jira/browse/BEAM-5714