【问题标题】:Why Cassandra TableWriter writing 0 records and how to fix it?为什么 Cassandra TableWriter 写入 0 条记录以及如何解决?
【发布时间】:2019-03-26 11:02:11
【问题描述】:

我正在尝试将 RDD 写入 Cassandra 表。 如下图TableWriter多次写入0行,最后写入Cassandra。

18/10/22 07:15:50 INFO TableWriter: Wrote 0 rows to log_by_date in 0.171 s.
18/10/22 07:15:50 INFO Executor: Finished task 4.0 in stage 0.0 (TID 4). 622 bytes result sent to driver
18/10/22 07:15:50 INFO TableWriter: Wrote 0 rows to log_by_date in 0.220 s.
18/10/22 07:15:50 INFO Executor: Finished task 1.0 in stage 0.0 (TID 1). 665 bytes result sent to driver
18/10/22 07:15:50 INFO TableWriter: Wrote 0 rows to log_by_date in 0.194 s.
18/10/22 07:15:50 INFO TableWriter: Wrote 0 rows to log_by_date in 0.224 s.
18/10/22 07:15:50 INFO Executor: Finished task 6.0 in stage 0.0 (TID 6). 708 bytes result sent to driver
18/10/22 07:15:50 INFO TableWriter: Wrote 0 rows to log_by_date in 0.231 s.
18/10/22 07:15:50 INFO Executor: Finished task 5.0 in stage 0.0 (TID 5). 622 bytes result sent to driver
18/10/22 07:15:50 INFO Executor: Finished task 3.0 in stage 0.0 (TID 3). 622 bytes result sent to driver
18/10/22 07:15:50 INFO TableWriter: Wrote 0 rows to log_by_date in 0.246 s.
18/10/22 07:15:50 INFO Executor: Finished task 0.0 in stage 0.0 (TID 0). 708 bytes result sent to driver
18/10/22 07:15:50 INFO TaskSetManager: Finished task 4.0 in stage 0.0 (TID 4) in 418 ms on localhost (executor driver) (1/8)
18/10/22 07:15:50 INFO TaskSetManager: Finished task 2.0 in stage 0.0 (TID 2) in 433 ms on localhost (executor driver) (2/8)
18/10/22 07:15:50 INFO TaskSetManager: Finished task 5.0 in stage 0.0 (TID 5) in 426 ms on localhost (executor driver) (3/8)
18/10/22 07:15:50 INFO TaskSetManager: Finished task 3.0 in stage 0.0 (TID 3) in 433 ms on localhost (executor driver) (4/8)
18/10/22 07:15:50 INFO TaskSetManager: Finished task 0.0 in stage 0.0 (TID 0) in 456 ms on localhost (executor driver) (5/8)
18/10/22 07:15:50 INFO TaskSetManager: Finished task 1.0 in stage 0.0 (TID 1) in 436 ms on localhost (executor driver) (6/8)
18/10/22 07:15:50 INFO TaskSetManager: Finished task 6.0 in stage 0.0 (TID 6) in 424 ms on localhost (executor driver) (7/8)
18/10/22 07:15:50 INFO **TableWriter: Wrote 1 rows to log_by_date in 0.342 s.**

为什么它之前多次保存失败,如何调整它以用于生产?

【问题讨论】:

  • 日志中没有失败。您显然有多个任务,有些似乎只是处理空分区。

标签: apache-spark datastax cassandra-3.0


【解决方案1】:

这不是用户 10465355 指出的故障。当 Spark 将一项工作分解为多个任务时,可能是工作分布不均,或者没有足够的工作让每个任务都有工作要做。这会导致某些任务为空,因此当它们由 Spark Cassandra 连接器处理时,它们会写入 0 行。

比如说;

  1. 您将 100 条记录读入 10 个 Spark 分区/任务
  2. 您做了一个过滤器,通过过滤器消除了值,因此现在 5 个任务中只剩下 30 条记录。其他 5 个是空的。
  3. 当您编写时,您现在只会看到为 5 个任务写入的记录,并且 5 个任务将报告它们没有写入任何行。

【讨论】:

  • 非常感谢,还有一件事。如何捕获 TableWriter 的计数? Ex 0 in this TableWriter: Wrote 0 rows ,只需要捕获成功写入的计数详细信息,以便我可以验证来自 oracle 的行数以及保存在 cassandra 中的行数.....有什么方法可以累积“计数” " 这样我就可以验证数据迁移...在此先感谢。
  • 你不能忽略分区,因为它可能有通过过滤器的记录,你只是不知道,直到你通过它。也不用担心连接时间,连接器使用连接池和缓存,因此基本上没有任何惩罚。总而言之,这里无事可做
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
  • 2017-04-02
  • 1970-01-01
  • 2012-05-20
  • 2010-09-16
  • 1970-01-01
相关资源
最近更新 更多