我正在通过扩展SparkListener类来实现SparkHealthListener.
@Component
class ClusterHealthListener extends SparkListener with Logging {
val appRunning = new AtomicBoolean(false)
val executorCount = new AtomicInteger(0)
override def onApplicationStart(applicationStart: SparkListenerApplicationStart) = {
logger.info("Application Start called .. ")
this.appRunning.set(true)
logger.info(s"[appRunning = ${appRunning.get}]")
}
override def onExecutorAdded(executorAdded: SparkListenerExecutorAdded) = {
logger.info("Executor add called .. ")
this.executorCount.incrementAndGet()
logger.info(s"[executorCount = ${executorCount.get}]")
}
}
Run Code Online (Sandbox Code Playgroud)
appRunning和executorCount是在ClusterHealthListener类中声明的两个变量.ClusterHealthReporterThread只会读取值.
@Component
class ClusterHealthReporterThread @Autowired() (healthListener: ClusterHealthListener) extends Logging {
new Thread {
override def run(): Unit = {
while (true) {
Thread.sleep(10 * 1000) …Run Code Online (Sandbox Code Playgroud) 我想找到Redshift上个月的第一天和最后一天.但是,大多数postgresql功能date_trunc似乎都不起作用.我怎样才能做到这一点?
如何在 Scala 中使用 privateMethodTester 测试采用泛型类型的私有方法?
假设我有以下方法:
private def parseValueForJsonKeyWithReturnType[A: TypeTag](
node: JsonNode,
key: String,
defaultValue: Option[A] = None): A = {
val parsedValue = Option(node.get(key)).map(value => {
typeOf[A] match {
case t if t =:= typeOf[String] =>
value.textValue()
case t if t =:= typeOf[Double] =>
value.asDouble()
case t if t =:= typeOf[Long] =>
value.asLong()
case _ => throw new RuntimeException(s"Doesn't support conversion to [type=${typeOf[A]}] for [key=${key}]")
}
})
parsedValue.getOrElse(defaultValue.get).asInstanceOf[A]
}
Run Code Online (Sandbox Code Playgroud)
我可以像这样调用方法
parseValueForJsonKeyWithReturnType[Boolean](jsonNode, key="hours")
parseValueForJsonKeyWithReturnType[String](jsonNode, key="hours")
parseValueForJsonKeyWithReturnType[Long](jsonNode, key="hours")
Run Code Online (Sandbox Code Playgroud)
在测试中,我正在尝试做
val parseValueForJsonKeyWithReturnTypeInt …Run Code Online (Sandbox Code Playgroud) 当前,我们有一个使用父子映射的ES 5.3集群,因为我们的数据遵循此模型。父子映射是最好的选择,因为它支持集群侧连接,并通过存储在同一分片中提供性能优势。
从5.3到6.2的迁移涉及重大更改,因为ES v6.0及更高版本不再支持多种映射类型。
想知道是否值得在使用连接数据类型的新版Elasticsearch中坚持使用父子数据模型。
据我所知,有三种可能的选择
使用新的联接数据类型保留父子映射。
优点
缺点
为每种映射类型创建单独的索引
优点
缺点
单个索引,但具有用于定义文档类型的自定义字段
优点
缺点
我更倾向于具有多个索引的第二种选择。我可以看到的主要缺点是应用程序侧连接可能很昂贵。同时,elasticsearch文档说has_parent,has_child查询也很昂贵。
通过使各个索引使用路由并因此在各个索引中实现数据局部性,可以在某种程度上实现将父子文档存储在同一分片中的另一个优点。
当前集群统计
270492501总文档
1596009父文档
268896492子文档
父级/子级文档计数比例最大为1:400
36个分片(12个主副本,24个副本)
92.33 GB数据
父级文档阅读量很大。子文档读写繁重。
想知道是否还有其他我需要考虑的性能/扩展方面。谢谢
我正在使用 Jest Client 和查询构建器。无法找到如何执行源过滤。
如何使用查询构建器将 _source 字段设置为 false?
我们可以通过将副本设置为零并增加刷新间隔来加速 elasticsearch (v 5.3) 重新索引操作,还是已经在内部进行了处理?
当我尝试将nsarray对象插入到可变的swift数组时,我得到了这个控制台输出.代码工作正常,但最后,它抛出一个错误.请帮我解决这个错误.
Successfully retrieved 3 scores.
Optional("HmEbbowtxW")
<Events: 0x7b08bdf0, objectId: HmEbbowtxW, localId: (null)> {
CreatedBy = "<PFUser: 0x7b02ed10, objectId: 04jp1ZeBn6>";
EventDescription = test;
EventName = test;
}
Optional("97BzKUxFdE")
<Events: 0x7b08cae0, objectId: 97BzKUxFdE, localId: (null)> {
CreatedBy = "<PFUser: 0x7b02ed10, objectId: 04jp1ZeBn6>";
EventDescription = fg;
EventName = gfg;
}
Optional("QDHkg5tiUw")
<Events: 0x7b08cf80, objectId: QDHkg5tiUw, localId: (null)> {
CreatedBy = "<PFUser: 0x7b02ed10, objectId: 04jp1ZeBn6>";
EventDescription = asdasdasd;
EventName = sdsd;
}
Could not cast value of type '__NSArrayI' (0x228e164) to 'NSMutableArray' (0x228e1c8).Run Code Online (Sandbox Code Playgroud)
这是我的代码 …
accountHandler 类中有一个具有以下签名的方法
public void processMessage(String accountId,
Metrics metrics,
Optional<ZonedDateTime> parsedDatetime) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
在测试中,如果我想使用参数捕获器,我该如何定义它?
尝试了以下方法,但没有达到预期效果。
ArgumentCaptor<ZonedDateTime> timeCaptor = ArgumentCaptor.forClass(ZonedDateTime.class);
Run Code Online (Sandbox Code Playgroud)
使用 argcaptor 使其可选的语法是什么?