前文:

过往采用Hive的离线处理时效性低,计算任务过于集中,查询效率低。SparkStreaming+Hive的数据清洗线使得多套数据流过于复杂。未来的数据仓库场景越来越趋向于实时数仓。

一、引入

二、架构图

2、架构及数据量

3、文件结构

4、目录结构

5、读写流程及分区策略

三、分区及策略

四、代码

1、通过SparkSql操作数据

object kudu_02_Main {def main(args: Array[String]): Unit = {val spark = SparkSession.builder().master("local[*]").appName("kudu_02_Main").getOrCreate()val df = spark.read.options(Map("kudu.master" -> "kudu-01:7051","kudu.table" -> "impala::test.my_table_kudu")).format("org.apache.kudu.spark.kudu").load()//.kududf.show();/*** +------+---------------------+---------+* | name | time                | message |* +------+---------------------+---------+* | joey | 2018-01-01 00:00:00 | hello   |* | ross | 2018-02-01 00:00:00 | goodbye |* +------+---------------------+---------+*/df.select("name").where("name = 'joey'").show()println("######################################################################")//    //注册全局视窗
//    df.createGlobalTempView("my_table_kudu1")
//    spark.sql("select * from global_temp.my_table_kudu1").show()//注册临时视窗df.createOrReplaceTempView("my_table_kudu2")spark.sql("select * from my_table_kudu2 where name = 'joey'").show()/*** create table test.my_tb2_kudu(* name string,* age int,* city string,* primary key(name)* )* partition by hash(name) partitions 2* stored as kudu;*/val students: Array[Student] = Array(Student("jack", 30, "new york"),Student("jason", 20, "beijing"),Student("cesar", 18, "guangzhou"),Student("anderson", 25, "dongguang"))import spark.implicits._val stuRDD: RDD[Student] = spark.sparkContext.parallelize(students)val stuDF = stuRDD.toDF()stuDF.write.options(Map("kudu.master"-> "bt-03:7051", "kudu.table"-> "impala::test.my_tb2_kudu")).mode("append").format("org.apache.kudu.spark.kudu").save}
}

2、通过kuduContext操作数据

object kudu_03_Main {case class Student(name: String, age: Int, city: String)case class delStu(name:String)def main(args: Array[String]): Unit = {val spark = SparkSession.builder().master("local[*]").appName("kudu_03_Main").getOrCreate()val kuduContext = new KuduContext("kudu-01:7051", spark.sparkContext)println(kuduContext.tableExists("impala::test.my_table_kudu"))/*** 建表语句* create table test.my_tb3_kudu(* name string,* age int,* city string,* primary key(name)* )* partition by hash(name) partitions 2* stored as kudu;*///增加val students: Array[Student] = Array(Student("jack", 30, "new york"),Student("jason", 20, "beijing"),Student("cesar", 18, "guangzhou"),Student("anderson", 25, "dongguang"))//RDD与DF互相转换import spark.implicits._val studentsRDD: RDD[Student] = spark.sparkContext.parallelize(students)val df: DataFrame = studentsRDD.toDF()df.show()//kuduContext.insertRows(df,"impala::test.my_tb3_kudu")val new_stu: Array[Student] = Array(Student("jack", 31, "dongbei"),Student("jason", 21, "shanghai"))val new_setRDD: RDD[Student] = spark.sparkContext.parallelize(new_stu)val df4 = new_setRDD.toDF()kuduContext.upsertRows(df4,"impala::test.my_tb3_kudu")//删除val delStus: Seq[delStu] = Seq(delStu("jason"),delStu("cesar"))//RDD与DF互相转换import spark.implicits._val delStusRDD: RDD[delStu] = spark.sparkContext.parallelize(delStus)val df1: DataFrame = delStusRDD.toDF()df1.show()//kuduContext.deleteRows(df1,"impala::test.my_tb3_kudu")val df2 = spark.read.options(Map("kudu.master" -> "bt-03:7051","kudu.table" -> "impala::test.my_tb3_kudu")).format("org.apache.kudu.spark.kudu").load()df2.show()df2.createOrReplaceTempView("my_tb3_kudu")val df3: DataFrame = spark.sql("select name from my_tb3_kudu where name = 'anderson'")//kuduContext.deleteRows(df3,"impala::test.my_tb3_kudu")}}

五、Kudu和HBase的对比

六、配置

master.gflagfile

# Do not modify these two lines. If you wish to change these variables,
# modify them in /etc/default/kudu-master.
--fromenv=rpc_bind_addresses
--fromenv=log_dir--fs_wal_dir=/data/kudu/wal/master
--fs_data_dirs=/data/kudu/data/master
--master_addresses=kudu-01:7051,kudu-02:7051,kudu-03:7051
-rpc_encryption=disabled
-rpc_authentication=disabled
-trusted_subnets=0.0.0.0/0--rpc_num_acceptors_per_address=5
--master_ts_rpc_timeout_ms=60000
--rpc_service_queue_length=1000

tserver.gflagfile

# Do not modify these two lines. If you wish to change these variables,
# modify them in /etc/default/kudu-tserver.
--fromenv=rpc_bind_addresses
--fromenv=log_dir--fs_wal_dir=/data/kudu/wal/server
--fs_data_dirs=/data/kudu/data/server
--tserver_master_addrs=kudu-01:7051,kudu-02:7051,kudu-03:7051
-rpc_encryption=disabled
-rpc_authentication=disabled
-trusted_subnets=0.0.0.0/0#性能调优
--memory_limit_hard_bytes=27917287424
--block_cache_capacity_mb=7680
--maintenance_manager_num_threads=3--rpc_num_acceptors_per_address=5
--master_ts_rpc_timeout_ms=60000
--rpc_service_queue_length=1000

Kudu的介绍及使用相关推荐

  1. [Kudu基础]--Kudu+Impala介绍 | 微店数据科学团队博客

    感谢原文作者:https://juejin.im/entry/5a72d3d1f265da3e4d730b37 Kudu+Impala介绍 概述 Kudu和Impala均是Cloudera贡献给Apa ...

  2. Apache Kudu的介绍

    一.Apache Kudu的介绍 1.1.背景介绍   在kudu之前,大数据主要以两种方式存储: (1)静态数据 : 以HDFS引擎作为存储,适用于高吞吐量的离线大数据分析场景. 这类存储的局限性是 ...

  3. Kudu+Impala介绍

    概述 Kudu和Impala均是Cloudera贡献给Apache基金会的顶级项目.Kudu作为底层存储,在支持高并发低延迟kv查询的同时,还保持良好的Scan性能,该特性使得其理论上能够同时兼顾OL ...

  4. kudu简介与操作方式

    kudu简介与操作方式 0.932018.06.09 16:13:35字数 750阅读 30042 1.kudu整体介绍 Kudu是cloudera开源的运行在hadoop平台上的列式存储系统,拥有H ...

  5. 笔记:分布式大数据技术原理(二)构建在 Hadoop 框架之上的 Hive 与 Impala

    """ 有了 MapReduce,Tez 和 Spark 之后,程序员发现,MapReduce 的程序写起来真麻烦.他们希望简化这个过程.这就好比你有了汇编语言,虽然你几 ...

  6. kudu介绍:为什么要使用?

    前言 近两年,KUDU 在大数据平台的应用越来越广泛.在阿里.小米.网易等公司的大数据架构中,KUDU 都有着不可替代的地位.本文通过分析 KUDU 的设计, 试图解释为什么 KUDU 会被广泛应用于 ...

  7. Kudo介绍 + Spark\Python\Scala开发Kudu应用程序

    前半部分文章摘自:http://blog.csdn.net/a1043498776/article/details/72681890 Kudu的背景 Hadoop中有很多组件,为了实现复杂的功能通常都 ...

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

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

  9. Kudu command tools

    为什么80%的码农都做不了架构师?>>>    介绍 kudu集群部署完毕后,如何管理kudu集群?官方提供了kudu command tool工具来管理kudu集群,通过kudu ...

最新文章

  1. PCL深度图像(2)
  2. SAP MM初阶事务代码MEK1维护PB00价格
  3. Dubbo服务引用过程
  4. Webex 如何在在线会议领域保持优势?
  5. matlab已知ft求f2t,基于Matlab的信号与系统实验指导2
  6. [Lucene.Net] 基本用法
  7. (一)深度伪造的视频人脸传输
  8. paip.docfile二进制复合文档
  9. adc0808模数转换实验报告_AD转换程序(ADC0808 TLC2543)
  10. matlab fft freqz,【急】请教 fft、freqz、bode 求相频响应的区别及原因
  11. python抓取贴吧_Python抓取图片(贴吧)
  12. RandomUtils 随机生成中文姓名,性别,Email,手机号,住址
  13. linux常用的解压缩文件的命令
  14. Oracle动态性能视图学习之v$session_longops
  15. linux 压缩文件夹.gz,Linux 系统 压缩和解压 gz 格式文件
  16. 2019-2-14SQLserver中拼音查询数据
  17. 10分钟入门Pandas(添加一些个人见解)
  18. NLTK使用教程(持续更新ing...)
  19. GeneXus学习记录——Transaction
  20. 转载:手機 Cell ID 與定位

热门文章

  1. 从Q萌到硬核:全面升级背后的默默扎根
  2. 3dmax2018软件下载,3dmax2018安装教程,游戏建模必学软件!
  3. 如何制作一个开屏引导轮播图?
  4. Linux系统中常用的docker镜像命令
  5. python:sklearn标签编码(LabelEncoder)
  6. 如何用python画小熊_转载:《笨办法学Python》笔记-----一个项目骨架
  7. 神奇的Win10小工具
  8. SQL数据库不用SQL语句能显示全表的内容_100道MySQL数据库经典面试题解析
  9. Oracle 表已经有数据 修改字段类型,把varchar2类型变成date类型
  10. 从视频中获取发丝都能看见的人体步态轮廓图