kudu简介与操作方式

0.932018.06.09 16:13:35字数 750阅读 30042

1、kudu整体介绍

Kudu是cloudera开源的运行在hadoop平台上的列式存储系统,拥有Hadoop生态系统应用的常见技术特性,运行在一般的商用硬件上,支持水平扩展,高可用。

kudu的使用场景:

  • Strong performance for both scan and random access to help customers simplify complex hybrid architectures(适用于那些既有随机访问,也有批量数据扫描的复合场景)
  • High CPU efficiency in order to maximize the return on investment that our customers are making in modern processors(高计算量的场景)
  • High IO efficiency in order to leverage modern persistent storage(使用了高性能的存储设备,包括使用更多的内存)
  • The ability to update data in place, to avoid extraneous processing and data movement(支持数据更新,避免数据反复迁移)
  • The ability to support active-active replicated clusters that span multiple data centers in geographically distant locations(支持跨地域的实时数据备份和查询)

kudu使用时的优势:
1)一个table由多个tablet组成,对分区查看、扩容和数据高可用支持非常好
2)支持update和upsert操作。
3)与imapla集成或spark集成后(dataframe)可通过标准的sql操作,使用起来很方便
4)可与spark系统集成

kudu使用时的劣势:
1)只有主键可以设置range分区,且只能由一个主键,也就是一个表只能有一个字段range分区,且该字段必须是主键。
2)如果是pyspark连接kudu,则不能对kudu进行额外的操作;而scala的spark可以调用kudu本身的库,支持kudu的各种语法。
3)kudu的shell客户端不提供表schema查看。如果你不通过imapla连接kudu,且想要查看表的元数据信息,需要用spark加载数据为dataframe,通过查看dataframe的schema查看表的元数据信息。
3)kudu的shell客户端不提供表内容查看。如果你想要表的据信息,要么自己写脚本,要么通过spark、imapla查看。
4)如果使用range 分区需要手动添加分区。假设id为分区字段,需要手动设置第一个分区为1-30.第二个分区为30-60等等
5)时间格式是utc类型,需要将时间戳转化为utc类型,注意8个小时时差

2、kudu操作

2.1、pyspark连接kudu

pyspark --jars /home/oicq/guomm/kudu-spark2_2.11-1.6.0.jar # 启动
sqlContext = pyspark.sql.SQLContext(spark) # 创建sql连接
df = sqlContext.read.format('org.apache.kudu.spark.kudu').options(**{"kudu.master":"127.0.0.1:7051", "kudu.table":"python-example"}).load() # 读取kudu表
df.write.format('org.apache.kudu.spark.kudu').option('kudu.master', '127.0.0.1:7051').option('kudu.table', 'python-example1').mode('append').save() # 写入kudu表

2.2、scala spark连接kudu(记得添加jar包)

jar包:
kudu-client-1.6.0.jar
kudu-spark2_2.11-1.6.0.jar

package com.is
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.sql.{SQLContext, SparkSession}import org.apache.kudu.spark.kudu._
import org.apache.kudu.sparkobject SparkKuduWrite {def main(args:Array[String]) {if(args.length < 2){println("Usage:SparkKuduWrite <data_path><kudu_table_name><kudu_master_hosts>")System.exit(1)}var data_path = args(0)var kudu_table_name = args(1)var kudu_master_hosts = args(2)println(data_path)println(kudu_table_name)println(kudu_master_hosts)var conf = new SparkConf().setAppName("stra_platform_test")val spark = SparkSession.builder().config(conf).getOrCreate()val sc = spark.sparkContextimport spark.implicits._val kuduContext = new KuduContext(kudu_master_hosts, sc)var df = spark.read.load(data_path)# 通过kuduContext可以操作kudu的所有功能kuduContext.upsertRows(df, kudu_table_name)}}

3、有用的文章:

kudu主页:https://kudu.apache.org/docs/index.html
kudu的分区详细信息:https://kudu.apache.org/docs/schema_design.html
操作kudu的各种形式:https://kudu.apache.org/docs/developing.html#_viewing_the_api_documentation
kudu python客户端源代码:https://github.com/apache/kudu/blob/master/python/kudu/client.pyx
kudu scala spark操作详细例子:https://blog.cloudera.com/blog/2017/02/up-and-running-with-apache-spark-on-apache-kudu/

kudu简介与操作方式相关推荐

  1. Apache Kudu 简介

    Introducing Apache Kudu Kudu是cloudera开源的运行在hadoop平台上的列式存储系统,拥有Hadoop生态系统应用的常见技术特性,运行在一般的商用硬件上,支持水平扩展 ...

  2. Kudu:为大数据快速分析量身定制的 Hadoop 存储系统

    Apache Hadoop提供了一系列数据存储与处理的组件,覆盖了多种多样.应用于企业级关键服务的用户案例.在Cloudera,我们一直在努力探索Hadoop的各种可能性,拓展Hadoop的边界--使 ...

  3. 四万字硬刚 Kudu | Kudu 基础原理实践小总结

    Kudu 简介 Hadoop 生态系统发展到现在,存储层主要由 HDFS 和 HBase 两个系统把持着,一直没有太大突破.在追求高吞吐的批处理场景下,我们选用 HDFS,在追求低延迟,有随机读写需求 ...

  4. 值得推荐的WEB版报表工具-报表设计器

    前段时间公司开发自己部门的业务系统,项目经理要求调研下有没有一款好用的报表,最好是便宜的. 我在网上调研了好多报表,发现有些大型报表配置复杂企业使用收费高.开源的报表问题提多大多数是外国的,再就时需要 ...

  5. kudu教程(一)——简介

    ##kudu教程(一)--简介 学习kudu先从kudu官网开始,进入主页https://kudu.apache.org/ 我们看到的第一句话就是 A new addition to the open ...

  6. kudu接受kafka消息_Kafka 在车好多

    在 2016 年中旬,车好多集团(瓜子二手车&毛豆新车)开始引入 Kafka 技术栈,起初的目标是作为大数据系统的数据输入,随着使用范围的推广,逐步成为集团数据链路的核心组件. Kafka 在 ...

  7. linux shell 宏定义_Linux系统和Shell命令行简介,走上数据分析之路

    122Linux系统和Shell命令行简介,走上数据分析之路 本节作者:刘永鑫 中国科学院遗传与发育生物学研究所 版本1.0.2,更新日期:2020年8月31日 本项目永久地址:https://git ...

  8. 网络分析概述之网络基础简介

    网络分析概述之网络基础简介 本文转载自小白名的生统笔记,原文链接:https://mp.weixin.qq.com/s/Bp-u663WUhFxPfeP7pBh0w 从本节开始介绍网络分析.本篇暂且对 ...

  9. 开源Gis简介(转)

    开源GIS简介 C++开源GIS中间件类库: GDAL(栅格)/OGR(矢量)提供了类型丰富的读写支持 GEOS(Geometry Engine Open Source)是基于C++的空间拓扑分析实现 ...

最新文章

  1. 厚积薄发,丰富的公用类库积累,助你高效进行系统开发(2)(转)
  2. [转帖]linux下的X server:linux图形界面原理
  3. vs如何写多线程_VS + PS + GS
  4. 解神者php奥义高阶,《解神者》角色月曦九攻略技能解析和兽主推荐
  5. 【网络流24题----09】方格取数问题
  6. 换行符javajava去除字符串中的空格、回车、换行符、制表符
  7. PHP数组缓存:三种方式JSON、序列化和var_export的比较
  8. MaxCompute平台非标准日期和气象数据处理方法--以电力AI赛为例
  9. window添加右键菜单
  10. mysql 转发_【mysql】【转发】my.cnf 讲解
  11. 落后产能的实现路径 | 凌云时刻
  12. Hyper-V虚拟机和虚拟化服务器区别
  13. JAVA Class6
  14. 用V实现电脑给手机开热点快乐上网
  15. 央行上海总部推出企业信用报告网银查询渠道
  16. HTTP/HTTPS与流量劫持/DNS劫持
  17. r5处理器_6款Ryzen 5000移动低压处理器爆料,AMD挺会玩的
  18. 电影投资普通小白参与能获得多少分红?分红有规则吗?
  19. 性能检测工具:Matrix-TraceCanary 入门
  20. 浅谈一个完整网站配色方案设计大法3实战篇

热门文章

  1. iphone邮箱加密发送_为什么从iPhone发送的视频质量如此之高?
  2. html字段后面加个红星,数字报纸HTML版本
  3. ShardingSphere 社区祝大家端午安康
  4. 踩内存是什么意思啊_草坪到底能不能踩
  5. which is和which are在句号里区别
  6. 菌群在发酵过程中如何动态演替
  7. Android开发应用记录
  8. 微信小游戏现在已不“小”了?
  9. 给Dynamics 365 on-premises版本 配置Exchange Server 2016邮件服务器
  10. 支付宝接口程序、文档及解读