问题标签 [apache-kudu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
84 浏览

apache-kudu - 此行已应用,无法修改

当我在测试环境中运行我的代码来测试我关于 kudu 插入的新代码时,它会向我报告:

此行已应用,无法修改。

我已经尝试调试我的代码并查看我的代码有什么问题,但它没有用

我想知道我的代码有什么问题,因为在我以前的代码中我可以正确运行但知道它不能

0 投票
0 回答
324 浏览

kudu - Kudu的MaintenanceMgr线程磁盘IO很高,读写几乎一样

这个问题已经受到在线使用的影响,但是当程序批量读取数据时,扫描器容易出现超时或者“java.io.IOException: Couldn't get scan data”异常。有人可以帮助回答并帮助优化这个问题,谢谢。

因为我有12个存储盘,之前设置了12个维护管理器线程,但是发现磁盘IO太高,导致磁盘满载。后来改成4线程,可以缓解,但还是占用不少。平均每盘读写70m/s以上。

磁盘io图片

0 投票
1 回答
57 浏览

apache-kudu - KUDU for JDBC replication purposes, but not for Off-loaded Analytics

Given the quote from Apache KUDU official documentation, namely: https://kudu.apache.org/overview.html

Kudu isn't designed to be an OLTP system, but if you have some subset of data which fits in memory, it offers competitive random access performance. We've measured 99th percentile latencies of 6ms or below using YCSB with a uniform random access workload over a billion rows. Being able to run low-latency online workloads on the same storage as back-end data analytics can dramatically simplify application architecture.

Does this statement imply that KUDU can be used for replication from a JDBC source - the simplest form possible?

0 投票
1 回答
315 浏览

apache-spark - Spark - Kudu 谓词下推

我正在将 kudu 和 spark 流用于实时仪表板,我的问题是,当我从带有 kudu 表的 spark 流中加入批处理时,它不会对其进行谓词下推,并且需要 2-3 秒才能获取整个spark中的表,然后过滤它。有什么办法可以避免这种情况?

谢谢,

亚历山德鲁

0 投票
1 回答
237 浏览

kudu - scala 2.12 的 Kudu 驱动程序

Scala 2.12 是否有任何 Apache Kudu 驱动程序?如果没有,他们有计划吗?

如果不是,这是否是 Apache Kudu 不再开发的警告信号?

我可以使用 Spark 2.4 和 Scala 2.11 中的 Kudu,但我更愿意迁移到 Scala 2.12

0 投票
1 回答
275 浏览

apache-kafka-connect - 无法使用镜头 kudu sink 连接器将数据从 kafka 主题插入或更新到 kudu 表

镜头 kudu sink 连接器版本 = kafka-connect-kudu-1.2.3-2.1.0

kudu 表模式

Kafka 主题数据 key.converter.schemas.enable = false,value.converter.schemas.enable = false,

kudu sink 连接器配置:

配置:1

配置:2

使用这两个配置,我收到以下错误

java:219)\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run( Thread.java:748)\n原因:org.apache.kafka.connect.errors.DataException:带有 schemas.enable 的 JsonConverter 需要 \"schema\" 和 \"payload\" 字段,并且可能不包含其他字段。如果您尝试反序列化纯 JSON 数据,请在转换器配置中设置 schemas.enable=false。\n\tat org.apache.kafka.connect.json.JsonConverter.toConnectData(JsonConverter.java:348)\n\tat org .apache.kafka.connect.runtime.WorkerSinkTask。

Kafka 主题 key.converter.schemas.enable = true,value.converter.schemas.enable = true,

kudu sink 连接器配置:

配置:1

配置:2

使用这两个配置,我收到以下错误

org.apache.kafka.connect.errors.ConnectException:由于不可恢复的异常而退出 WorkerSinkTask。\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:560)\n\tat org.apache .kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:321)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:224)\n\tat org.apache.kafka .connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:192)\n\tat org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:175)\n\tat org.apache.kafka.connect .runtime.WorkerTask.run(WorkerTask.java:219)\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n\tat java.util.concurrent.FutureTask.run(FutureTask .java:266)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n原因:java.lang。 RuntimeException: scala.MatchError: null\n\tat com.datamountaineer.streamreactor.connect.errors.ThrowErrorPolicy.handle(ErrorPolicy.scala:58)\n\tat com.datamountaineer.streamreactor.connect.errors.ErrorHandler$class.handleError (ErrorHandler.scala:83)\n\tat com.datamountaineer.streamreactor.connect.errors.ErrorHandler$class.handleTry(ErrorHandler.scala:64)\n\tat com.datamountaineer.streamreactor.connect.kudu.sink.KuduWriter .handleTry(KuduWriter.scala:50)\n\tat com.datamountaineer.streamreactor.connect.kudu.sink.KuduWriter.applyInsert(KuduWriter.scala:143)\n\tat com.datamountaineer.streamreactor.connect.kudu.sink .KuduWriter.write(KuduWriter.scala:100)\n\tat com.datamountaineer.streamreactor.connect.kudu.sink.KuduSinkTask$$anonfun$put$2.apply(KuduSinkTask.scala:68)\n\tat com.datamountaineer.streamreactor.connect.kudu.sink.KuduSinkTask$$anonfun$put$2。应用(KuduSinkTask.scala:68)\n\tat scala.Option.foreach(Option.scala:257)\n\tat com.datamountaineer.streamreactor.connect.kudu.sink.KuduSinkTask.put(KuduSinkTask.scala:68) \n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:538)\n\t... 10 个以上\n原因:scala.MatchError: null\n\tat com.datamountaineer。 streamreactor.connect.kudu.KuduConverter$class.com$datamountaineer$streamreactor$connect$kudu$KuduConverter$$addFieldToRow(KuduConverter.scala:106)\n\tat com.datamountaineer.streamreactor.connect.kudu.KuduConverter$$anonfun$ convertToKuduUpsert$2.apply(KuduConverter.scala:48)\n\tat com.datamountaineer。streamreactor.connect.kudu.KuduConverter$$anonfun$convertToKuduUpsert$2.apply(KuduConverter.scala:48)\n\tat scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)\n\tat scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)\n\tat scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)\n\tat scala.collection. mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)\n\tat scala.collection.TraversableLike$class.map(TraversableLike.scala:234)\n\tat scala.collection.AbstractTraversable.map(Traversable.scala:104) \n\tat com.datamountaineer.streamreactor.connect.kudu.KuduConverter$class.convertToKuduUpsert(KuduConverter.scala:48)\n\tat com.datamountaineer.streamreactor.connect.kudu.sink.KuduWriter.convertToKuduUpsert(KuduWriter.scala: 50)\n\tat com.datamountaineer。streamreactor.connect.kudu.sink.KuduWriter.com$datamountaineer$streamreactor$connect$kudu$sink$KuduWriter$$handleSinkRecord$1(KuduWriter.scala:130)\n\tat com.datamountaineer.streamreactor.connect.kudu.sink。 KuduWriter$$anonfun$1$$anonfun$apply$mcV$sp$1.apply(KuduWriter.scala:138)\n\tat com.datamountaineer.streamreactor.connect.kudu.sink.KuduWriter$$anonfun$1$$anonfun$apply $mcV$sp$1.apply(KuduWriter.scala:138)\n\tat scala.collection.Iterator$$anon$11.next(Iterator.scala:410)\n\tat scala.collection.Iterator$$anon$11。 next(Iterator.scala:410)\n\tat scala.collection.Iterator$GroupedIterator.takeDestructively(Iterator.scala:1074)\n\tat scala.collection.Iterator$GroupedIterator.go(Iterator.scala:1089)\n \tat scala.collection.Iterator$GroupedIterator.fill(Iterator.scala:1126)\n\tat scala.collection.Iterator$GroupedIterator.hasNext(Iterator.scala:1130)\n\tat scala.collection.Iterator$class.foreach(Ite​​rator.scala:891)\n\tat scala.collection.AbstractIterator.foreach(Ite​​rator.scala:1334)\n\tat com.datamountaineer。 streamreactor.connect.kudu.sink.KuduWriter$$anonfun$1.apply$mcV$sp(KuduWriter.scala:141)\n\tat com.datamountaineer.streamreactor.connect.kudu.sink.KuduWriter$$anonfun$1.apply( KuduWriter.scala:141)\n\tat com.datamountaineer.streamreactor.connect.kudu.sink.KuduWriter$$anonfun$1.apply(KuduWriter.scala:141)\n\tat scala.util.Try$.apply(试试.scala:192)\n\tat com.datamountaineer.streamreactor.connect.kudu.sink.KuduWriter.applyInsert(KuduWriter.scala:136)\n\t... 16 更多\n"connect.kudu.sink.KuduWriter$$anonfun$1.apply$mcV$sp(KuduWriter.scala:141)\n\tat com.datamountaineer.streamreactor.connect.kudu.sink.KuduWriter$$anonfun$1.apply(KuduWriter. scala:141)\n\tat com.datamountaineer.streamreactor.connect.kudu.sink.KuduWriter$$anonfun$1.apply(KuduWriter.scala:141)\n\tat scala.util.Try$.apply(Try.scala :192)\n\tat com.datamountaineer.streamreactor.connect.kudu.sink.KuduWriter.applyInsert(KuduWriter.scala:136)\n\t... 16 更多\n"connect.kudu.sink.KuduWriter$$anonfun$1.apply$mcV$sp(KuduWriter.scala:141)\n\tat com.datamountaineer.streamreactor.connect.kudu.sink.KuduWriter$$anonfun$1.apply(KuduWriter. scala:141)\n\tat com.datamountaineer.streamreactor.connect.kudu.sink.KuduWriter$$anonfun$1.apply(KuduWriter.scala:141)\n\tat scala.util.Try$.apply(Try.scala :192)\n\tat com.datamountaineer.streamreactor.connect.kudu.sink.KuduWriter.applyInsert(KuduWriter.scala:136)\n\t... 16 更多\n"sink.KuduWriter.applyInsert(KuduWriter.scala:136)\n\t... 16 个以上\n"sink.KuduWriter.applyInsert(KuduWriter.scala:136)\n\t... 16 个以上\n"

0 投票
1 回答
92 浏览

java - 如何将数据从 Java 对象加载到 Kudu 表?

我有一个 Java 代码,我在其中将我的 JSON 字符串转换为 Java 对象。我将该字符串的值存储到对象中。

接下来我需要做的是将这些值存储在 Kudu 表中。如果可能的话,我只想知道如何使用 Docker 容器来完成。或者有没有其他方法可以做到这一点。

下面是我写的代码:

此外,在我的 Ubuntu VM 上安装 Docker 后,我尝试按照https://kudu.apache.org/docs/quickstart.html页面中给出的步骤进行操作。但是克隆 git repo 会引发如下错误:

致命:包在偏移量处有坏对象____:返回-5

0 投票
1 回答
267 浏览

kerberos - 在 kerberized CDH 集群中运行 kudu fsck

我正在尝试让 cloudera 管理器对 kudu 集群运行检查,最终将是以下命令,以 kudu 用户身份运行:

kudu cluster ksck master_host

该命令的输出是:

未授权:领导主活动检查错误:无法连接到集群:客户端连接协商失败:客户端连接到 10.xyz:7051:服务器需要身份验证,但客户端没有可用的 Kerberos 凭据

如果我从命令行手动运行这个命令,作为 kudu,我有同样的错误。如果我尝试运行kinit,则会要求 kudu 用户输入密码,但据我了解,所有“后端”用户都是无密码的。

如果我更新 $HOME/.klogin 以允许我的用户使用ksu我确实有一张 krb 票(klist显示它)但它仍然不是 kudu 用户的票,我最终会收到相同的错误消息。

我的 kerberos-fu 很弱,但据我所知,集群配置良好,spark/impala/kudu 可以很好地协同工作,没有授权问题。检查器全是绿色的,集群的所有主机都有 kudu 凭据。

我怎样才能让这个命令从 cloudera 管理器中正常运行?

0 投票
1 回答
234 浏览

cloudera-cdh - 从 kudu 磁盘迁移数据

问题(TL;DR;)

我正在寻找的是一种告诉 kudu 将数据从目录中复制出来(/data/0在下面的上下文中)或停用目录的方法。可能吗?

语境

我有一个带有多个数据目录(都在不同磁盘上)的 kudu 设置,例如。/data/0, /data/1, /data/2. 目前 WALs/data/0以及 kudu tablet、hdfs 目录和 yarn 本地目录都在。长话短说,这个磁盘超载了,我想迁移除 WAL 之外的所有东西。

这个问题与 kudu tablet 目录有关。我知道如何从文档中强制删除磁盘,但是:

如果指定了 --force,所有配置为使用该目录的平板电脑将在启动时失败并在其他地方复制。

这听起来不错(平板电脑最终会被复制),但我碰巧有一些复制因子为 1 的表,所以这些表将被完全销毁。

解决方法

我知道一些解决方法,但没有一个是理想的:

  • 我可以重新创建 RF 为 3 的表
  • 我可以kudu tablet change_config move_replica使用例如 RF 1 为桌子制作平板电脑。服务器 1 到服务器 2,然后删除服务器 1 的目录,重新平衡,然后冲洗并重复从服务器 2 到 3,然后从 3 到 1(我只有 3 台服务器)。
  • 我可以移动/data/0到内部/data/1(配置实际上并不使用整个磁盘,而是使用那里的一个子目录),但/data/1随后会收到两倍的 IO。
0 投票
1 回答
267 浏览

escaping - kudu impala 2.11 色调转义字符不起作用

我将 CDH 与 impala 2.11 一起使用。我有一个存储在 kudu 中的测试表。我在 HUE 中编写 SQL 如下:

查找仅包含单引号的名称

但它不起作用。

为什么?