我可以在Scio中设置/取消默认编码器吗?

时间:2019-06-10 18:48:11

标签: serialization apache-beam spotify-scio

我想为案例类RicherIndicatorCoder始终应用自定义RicherIndicator。此外,如果我无法为包含Tuples的{​​{1}}或KVs提供新的编码器,那么我想获得编译时或运行时错误,而不是使用次优编码器。 / p>

但是Scio似乎不喜欢RicherIndicator注释:

@DefaultCoder

Scio也不优先向在@DefaultCoder(classOf[RicherIndicatorCoder]) // Ignored case class RicherIndicator ( policy: Policy, indicator: Indicator ) 注册的自定义编码器提供优先级,而是依靠其自身的默认编码器:

CoderRegistry

因此,我必须在出现这种类型的val registry = sc.pipeline.getCoderRegistry registry.registerCoderForClass(classOf[RicherIndicator], RicherIndicatorCoder.of) // Not used 的任何地方使用setCoder(RicherIndicatorCoder.of),并仔细梳理管道,以防包含SCollection的复合类型。

是否可以将自定义编码器设置为默认编码器,或者禁用基于木兰或Kryo的默认编码器?

1 个答案:

答案 0 :(得分:0)

Java注释在Scala中不起作用。您可以像这样将Beam initializeGlobalData(); new Handler().postDelayed(new Runnable() { @Override public void run() { Intent i = new Intent(SplashActivity.this, MainActivity.class); startActivity(i); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); finish(); } }, 2000); 包装为隐式Scio Coder

Coder

只要隐式对象在范围内,就应将其拾取。