使用 Kudu 开发应用程序
译文链接 :
Kudu 提供 C ++,Java 和 Python 客户端 API 以及参考示例来说明它们的用途。
注意
不支持使用服务器端或专用接口,不属于公共 API 的接口没有稳定性保证。
查看 API 文档
您可以在线查看 C ++ 客户端 API 文档。或者,在从源代码构建 Kudu 后,您还可以另外构建 doxygen 目标(例如,如果使用 make ,则运行 make doxygen ),并通过在您最喜欢的 Web 中打开 docs/doxygen/client_api/html/index.html 文件来使用本地生成的 API 文档浏览器。
重要
为了构建 doxygen 目标,有必要在您的构建机器上安装带有 Dot( graphviz )支持的 doxygen 。如果您从源代码构建 Kudu 后安装了 doxygen ,则需要再次运行 cmake 以获取 doxygen 位置并生成适当的目标。
您可以在线查看 。或者,在构建 Java 客户端之后,Java API 文档可以在 java/kudu-client/target/apidocs/index.html 中找到。
Github 仓库中提供了几个示例应用程序。每个示例包括一个自述文件,显示如何编译和运行它。这些例子说明了 Kudu API 的正确使用,以及如何设置虚拟机来运行 Kudu 。以下列表包括今天可用的一些示例。检查存储库本身,以防此列表过期。
连接到 Kudu 实例的简单 Java 应用程序创建一个表,向其中写入数据,然后丢弃该表。
java/collectl
侦听 TCP 套接字的小型 Java 应用程序,用于与 Collectl 有线协议相对应的时间序列数据。常用的 collectl 工具可用于将示例数据发送到服务器。
java/insert-loadgen
生成随机插入负载的 Java 应用程序。
python/dstat-kudu
一个示例程序,显示如何使用 Kudu Python API 将数据加载到由外部程序生成的新的/现有的 Kudu 表中, dstat 在这种情况下。
python/graphite-kudu
使用 graphite-web ( 石墨网 ) 与 Kudu 作为后端的实验插件。
demo-vm-setup
这些例子应该是您自己的 Kudu 应用程序和集成的有用起点。
以下 Maven <dependency> 元素对于 Apache Kudu 公开版本(从1.0.0 开始)是有效的:
Java 客户端和各种 Java 集成(例如 Spark , Flume )的便利二进制文件现在也可以通过 ASF Maven 存储库 和获得。
Impala命令使用 Kudu 的例子
请参阅 使用 Impala 与 Kudu 进行有关使用 Kudu 安装和使用 Impala 的指导,其中包括几个 impala-shell 示例。
Kudu 从 1.0.0 版开始,通过 Data Source API 与 Spark 集成。使用 —packages 选项包括 kudu-spark 依赖关系:
如果使用 Spark 与 Scala 2.10 ,请使用 kudu-spark_2.10 插件:
如果在 Scala 2.11 中使用 Spark 2 ,请使用 kudu-spark2_2.11 插件:
然后导入 kudu-spark 并创建一个数据框:
- 注册为临时表时,必须为具有大写字母或非 ASCII 字符的名称的 Kudu 表分配备用名称。
- 具有包含大写字母或非 ASCII 字符的列名称的 Kudu 表可能不与 SparkSQL 一起使用。 Columns 可能在 Kudu 更名为解决这个问题。
- <> 和 OR 谓词不被推送到 Kudu ,而是将在 Spark 的evaluate过程中执行, 只有具有后缀通配符的 LIKE 谓词才被推送到 Kudu 执行,这意味着 LIKE“FOO%”语句被下推到Kudu,而 “FOO%BAR” 这样的语句不会。
- Kudu 表只能在 SparkSQL 中注册为临时表。 可能不会使用 HiveContext 查询 Kudu 表。
Kudu Python 客户端
Kudu Python 客户端为 C ++ 客户端 API 提供了一个 Python 友好的界面。 下面的示例演示了如何使用部分 Python 客户端。
Kudu 旨在与 Hadoop 生态系统中的 MapReduce , YARN , Spark 和其他框架集成。 请参阅 和 ImportCsv.java ,了解可以对自己的集成进行建模的示例。 请继续关注未来使用 YARN 和 Spark 的更多示例。