embulk-output-key_to_redis 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cacc8741d9141b1fc1de001245082f1542849df9
|
4
|
+
data.tar.gz: f91d317b22fc2a87d30044d14f0498a1bf39e368
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cfeb481de84ff42d12b0c361b989736851bdf007ae73b25ea1de18837b2a676e3a35465c642cc82c887b7943404c5ed3a6c00a3064582761f6b1591a5bb05514
|
7
|
+
data.tar.gz: 3fcfac83f63fbbfc9cd7e2b5142d3ddd7bffe0158d0d8c5935fd2fab2ea40d37190061e2bfb30b81ddf6ceaff3bc77e0a3a5780e2d88c21a3ae9f64770c8d804
|
@@ -0,0 +1,27 @@
|
|
1
|
+
version: 2
|
2
|
+
jobs:
|
3
|
+
build:
|
4
|
+
executorType: docker
|
5
|
+
docker:
|
6
|
+
- image: hseeberger/scala-sbt
|
7
|
+
working_directory: /root/embulk-output-key_to_redis/
|
8
|
+
steps:
|
9
|
+
- checkout
|
10
|
+
- restore_cache:
|
11
|
+
name: Restoring Cache
|
12
|
+
keys:
|
13
|
+
- sbt
|
14
|
+
- setup_remote_docker
|
15
|
+
- run:
|
16
|
+
name: prepare
|
17
|
+
command: sbt update exit
|
18
|
+
- save_cache:
|
19
|
+
name: Saving Cache sbt
|
20
|
+
key: sbt
|
21
|
+
paths:
|
22
|
+
- "/root/.sbt"
|
23
|
+
- "/root/.ivy2"
|
24
|
+
- run:
|
25
|
+
name: compile
|
26
|
+
command: |
|
27
|
+
sbt compile test scalafmt::test exit
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Key To Redis output plugin for Embulk
|
2
2
|
|
3
|
-
|
3
|
+
Generate the aggregated key from input values and output to Redis's SET value.
|
4
4
|
|
5
5
|
This plugin is designed to extract data set diff files used with the combination in below use cases.
|
6
6
|
|
data/build.gradle
CHANGED
@@ -8,8 +8,12 @@ import org.embulk.output.key_to_redis.column._
|
|
8
8
|
import org.embulk.spi.time.TimestampFormatter
|
9
9
|
import org.embulk.spi._
|
10
10
|
import org.bouncycastle.util.encoders.Hex
|
11
|
+
import org.embulk.output.key_to_redis.redis.Redis
|
11
12
|
|
12
13
|
import scala.collection.JavaConverters._
|
14
|
+
import scala.concurrent.duration._
|
15
|
+
import scala.collection.mutable.ListBuffer
|
16
|
+
import scala.concurrent.{Await, Future}
|
13
17
|
|
14
18
|
case class PageOutput(taskSource: TaskSource,
|
15
19
|
schema: Schema,
|
@@ -21,6 +25,10 @@ case class PageOutput(taskSource: TaskSource,
|
|
21
25
|
def timestampFormatter(): TimestampFormatter =
|
22
26
|
new TimestampFormatter(task, Optional.absent())
|
23
27
|
|
28
|
+
val buffer = new ListBuffer[Future[Long]]
|
29
|
+
val redis: Redis =
|
30
|
+
KeyToRedisOutputPlugin.redis.getOrElse(sys.error("could not find redis."))
|
31
|
+
|
24
32
|
override def add(page: Page): Unit = {
|
25
33
|
val reader: PageReader = new PageReader(schema)
|
26
34
|
reader.setPage(page)
|
@@ -37,17 +45,21 @@ case class PageOutput(taskSource: TaskSource,
|
|
37
45
|
if (putAsMD5) {
|
38
46
|
val hash = Hex.toHexString(
|
39
47
|
digestMd5.digest(setValueVisitor.getValue.getBytes()))
|
40
|
-
|
48
|
+
buffer.append(redis.sadd(hash))
|
41
49
|
} else {
|
42
|
-
|
43
|
-
_.sadd(setValueVisitor.getValue))
|
50
|
+
buffer.append(redis.sadd(setValueVisitor.getValue))
|
44
51
|
}
|
45
52
|
}
|
46
53
|
}
|
47
54
|
reader.close()
|
48
55
|
}
|
49
56
|
|
50
|
-
override def finish(): Unit =
|
57
|
+
override def finish(): Unit = {
|
58
|
+
import scala.concurrent.ExecutionContext.Implicits.global
|
59
|
+
val sequence = Future.sequence(buffer)
|
60
|
+
Await.result(sequence, Duration.Inf)
|
61
|
+
}
|
62
|
+
|
51
63
|
override def close(): Unit = ()
|
52
64
|
override def commit(): TaskReport = Exec.newTaskReport
|
53
65
|
override def abort(): Unit = ()
|
@@ -23,9 +23,8 @@ case class Redis(setKey: String, host: String, port: Int, db: Option[Int]) {
|
|
23
23
|
}
|
24
24
|
Await.result(s, 10.minute)
|
25
25
|
}
|
26
|
-
def sadd(value: String): Long = {
|
27
|
-
|
28
|
-
Await.result(s, 10.minute)
|
26
|
+
def sadd(value: String): Future[Long] = {
|
27
|
+
redis.sadd(setKey, value)
|
29
28
|
}
|
30
29
|
|
31
30
|
def flush(): Boolean = {
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embulk-output-key_to_redis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- smdmts
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -45,6 +45,7 @@ executables: []
|
|
45
45
|
extensions: []
|
46
46
|
extra_rdoc_files: []
|
47
47
|
files:
|
48
|
+
- .circleci/config.yml
|
48
49
|
- .gitignore
|
49
50
|
- LICENSE.txt
|
50
51
|
- README.md
|
@@ -77,7 +78,7 @@ files:
|
|
77
78
|
- classpath/circe-numbers_2.11-0.8.0.jar
|
78
79
|
- classpath/circe-parser_2.11-0.8.0.jar
|
79
80
|
- classpath/config-1.2.1.jar
|
80
|
-
- classpath/embulk-output-key_to_redis-0.1.
|
81
|
+
- classpath/embulk-output-key_to_redis-0.1.1.jar
|
81
82
|
- classpath/jawn-parser_2.11-0.10.4.jar
|
82
83
|
- classpath/machinist_2.11-0.6.1.jar
|
83
84
|
- classpath/macro-compat_2.11-1.1.1.jar
|