小编Vij*_*sal的帖子

将第3方库的Log4j日志路由到Log4j2

我的使用Log4j2作为日志记录实现的Java应用程序依赖于使用Log4j的第三方库。

我试图在我的应用程序中使用编程方式为这些第三方记录器设置root logger附加程序和日志级别(使用下面的代码),但是这些第三方库的记录器仍未记录到myAppender:

LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
LoggerConfig loggerConfig = ctx.getConfiguration().getLoggerConfig(
        LogManager.ROOT_LOGGER_NAME);
loggerConfig.addAppender(myAppender, Level.ERROR, null);
ctx.updateLoggers();
Run Code Online (Sandbox Code Playgroud)

我想到的一种解决方案是使用Log4jToSLF4JAdaptor将log4j的日志记录路由到SLF4J,然后使用Log4JSLF4JImpl将SLF4J的日志记录路由到我的Log4J2实现,但是如此处所述(https://logging.apache.org/log4j/2.0/log4j-slf4j- impl / index.html),这将导致路由无限。

您能否建议我如何将这些第三方库的记录器的日志记录路由到myAppender?

java logging log4j log4j2

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

Flink 中的检查点事件时间水印

我们正在从一个号码接收事件。独立的数据源,因此,到达我们的 Flink 拓扑(通过 Kafka)的数据将是无序的。

我们正在 Flink 拓扑中创建 1 分钟的事件时间窗口,并在源操作符处生成事件时间水印作为(当前事件时间 - 某个阈值(30 秒))。

如果在设置的阈值之后有几个事件到达,这些事件将被简单地忽略(在我们的例子中是可以的,因为属于那一分钟的大多数事件已经到达并在相应的窗口中得到处理)。

现在,问题是,如果程序崩溃(无论出于何种原因)然后从最后一个成功的检查点再次恢复,到达事件的无序将触发过去(已处理)窗口的执行(只有极少数事件在该窗口)覆盖上一个结果。该窗口的计算。

如果 Flink 有检查点事件时间水印,这个问题就不会发生。

所以,我想知道是否有办法在 Flink 中强制执行事件时间水印的检查点......

apache-flink checkpointing flink-streaming

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

在 Flink 流中使用静态 DataSet 丰富 DataStream

我正在编写一个 Flink 流程序,其中我需要使用一些静态数据集(信息库,IB)来丰富用户事件的 DataStream。

例如,假设我们有一个买家的静态数据集,我们有一个传入的事件点击流,对于每个事件,我们想要添加一个布尔标志,指示事件的执行者是否是买家。

实现此目的的理想方法是按用户 id 对传入流进行分区,让数据集中的买家集再次按用户 id 进行分区,然后在此数据集中查找流中的每个事件。

由于 Flink 不允许在流程序中使用 DataSets,我该如何实现上述功能?

另一种选择可能是使用托管运营商状态来存储买家集,但我如何保持此状态按用户 ID 分发,以避免在单个事件查找中进行网络输入/输出?在内存状态后端的情况下,状态是否保持由某个键分布,还是在所有操作员子任务中复制?

在 Flink 流程序中实现上述丰富需求的正确设计模式是什么?

data-analysis bigdata apache-flink flink-streaming

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

卡夫卡分区重新分配绩效影响

我有一个Kafka生产集群,有5个节点和大约500个主题.我需要扩展我的集群以添加2个新节点,因此,Kafka不提供自动数据重新分区,我希望kafka-reassign-partitions.sh与Kafka发行版一起运行,以便现在重新平衡集群中整个7个节点中的所有主题.

由于我的群集中已经有大量的生产数据,

  1. 运行此脚本会阻止对我的Kafka主题的任何并发写入吗?
  2. 运行此脚本会减慢我的群集/生产者/消费者的速度吗?
  3. 如果脚本在此脚本执行期间开始行为异常,如何在脚本正在进行时停止该脚本?

我目前正在使用Kafka v0.8.2.0与多个生产者和多个消费者.

apache-kafka kafka-consumer-api kafka-producer-api

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

即使在既是 Dist Key 又是 Sort Key 的列上加入时,Amazon Redshift 也会执行 Hash Join

我在 Redshift 中有一个事实表,其中包含大约 13 亿行,其中包含 DISTribution 键 c1 和排序键 c1、c2。

我需要使用 c1 上的联接子句将该表与其自身联接起来(即来自表的第一个实例的 c1 = 来自表的第二个实例的 c1)。

当我看到查询的查询计划时,Redshift 似乎正在使用 DS_DIST_NONE 进行哈希联接。虽然 DS_DIST_NONE 是预期的,因为我在列 c1 上同时具有 dist 键和排序键,但我希望 Redshift 执行合并联接而不是散列联接(再次由于相同的原因)。

我相信这会减慢我的查询速度。

任何人都可以解释一下为什么 Redshift 可能会执行哈希连接而不是合并连接(即使我在连接列上同时具有 DIST 键和 SORT 键)并且 Redshift 对查询执行 DS_DIST_NONE ?

sql hash join amazon-web-services amazon-redshift

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

phonon不支持mp3文件

我正在使用Qt SDK 4.6在Windows XP上开发一个简单的音乐播放器.我已经检查了phonon支持的可用mime类型并根据它我的声音支持mp3文件然而当我尝试使用我的音乐播放器播放.mp3格式的音频文件时mediaObject在错误状态中移动并且我得到的错误是致命错误:否可以找到过滤器的组合来呈现流.其次,我想知道我如何能够支持声音当前不支持的其他音频文件,如.ogg文件.请帮忙.

phonon

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

Java线程池ExecutorService:线程执行顺序

当我们使用Java的Executor服务创建一个线程池并向该线程池提交线程时,这些线程的执行顺序是什么?

我想确保线程先提交,先执行。例如,在下面的代码中,我希望首先执行前 5 个线程,然后执行接下来的 5 个线程,依此类推...

// Create a thread pool of 5 threads.
ScheduledExecutorService exService = Executors.newScheduledThreadPool(5, new ModifiedThreadFactory("ReadThreadPool"));

// Create 100 threads.
MyThread[] threads = createMyThreads(100);

// Submit these 100 threads to thread pool for execution.
for(MyThread thread : threads) {
    exService.submit(thread);
}
Run Code Online (Sandbox Code Playgroud)

Java的线程池是否提供了用于此目的的API,或者我们是否需要在我们的末端实现一个FIFO队列来实现此目的。如果 Java 的线程池不提供任何此类功能,我真的很想了解此功能不存在背后的原因,因为它对我来说似乎是一个非常常见的用例。这在技术上是不可能的(我认为这不太可能),还是只是一个失误?

java multithreading executorservice threadpool

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