使用 Kudu 开发应用程序

    译文链接 :

    贡献者 : 小瑶 Apache中文网

    Kudu 提供 C ++JavaPython 客户端 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 集成(例如 SparkFlume )的便利二进制文件现在也可以通过 ASF Maven 存储库 和获得。

    Impala命令使用 Kudu 的例子

    请参阅 使用 ImpalaKudu 进行有关使用 Kudu 安装和使用 Impala 的指导,其中包括几个 impala-shell 示例。

    Kudu1.0.0 版开始,通过 Data Source APISpark 集成。使用 —packages 选项包括 kudu-spark 依赖关系:

    如果使用 SparkScala 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 生态系统中的 MapReduceYARNSpark 和其他框架集成。 请参阅 ImportCsv.java ,了解可以对自己的集成进行建模的示例。 请继续关注未来使用 YARNSpark 的更多示例。