码迷,mamicode.com
首页 > 数据库 > 详细

Spark SQL1.2与HDP2.2结合

时间:2015-05-02 11:08:15      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

1.hbase相同的rowkey里存在多条记录问题的调研解决方案

VERSIONS => 3,Hbase version 最多插入三条记录

将一个集群hbase中表 "VerticalDataTable" 数据插入另一张表时遇到问题,本来有十几个版本,但是只插入了3个版本(还是可以插入成功)

搜索后发现是因为在建表的时候,VERSIONS => 3默认为3, VERSIONS是跟columnfamily相关的所以需要修改表的VERSIONS 属性
alter table {NAME => ‘columnfamily‘, VERSIONS => ‘300‘}
用处:如果将VERSIONS => 1则只插入一个版本,这样就可以避免在相同的rowkey的情况下,有重复的记录
但平时我们做scan查询时:
hbase(main):079:0> create ‘scores‘,{NAME=>‘course‘,VERSIONS=>2}
//版本为2
hbase(main):080:0> put ‘scores‘,‘Tom‘,‘course:math‘,‘97‘
hbase(main):082:0> put ‘scores‘,‘Tom‘,‘course:math‘,‘100‘
hbase(main):026:0> scan ‘scores‘
ROW COLUMN+CELL 
Tom column=course:math, timestamp=1394097651029, value=100 
1 row(s) in 0.0110 seconds
//HBASE默认scan出来的结果是最后一条时间戳的记录
hbase(main):032:0> scan ‘scores‘,{VERSIONS=>2}
ROW COLUMN+CELL 
Tom column=course:math, timestamp=1394097651029, value=100 
Tom column=course:math, timestamp=1394097631387, value=97 
1 row(s) in 0.0130 seconds
//查出两条记录
hbase(main):029:0> alter ‘member‘,{NAME=>‘info‘,‘VERSIONS‘=>2}
//修改versions
 

2.hive表内去重数据解决方案

insert overwrite table store  
  select t.p_key,t.sort_word from   
    ( select p_key,  
           sort_word ,  
           row_number()over(distribute by p_key sort by sort_word) as rn  
     from store) t  
     where t.rn=1; 

Hive上一个典型表内除重的写法, p_key为除重依据, sort_word 为排序依据,一般为时间   rn为排名。

2.关于用SparkSQL历史数据(DBMS)和大数据平台多数据源同时抽取的调研解决方案

Spark Submit 2014上,Databricks宣布放弃Shark 的开发,而转投Spark SQL,理由是Shark继承了Hive太多,优化出现了瓶颈

2015年3月13日 Databricks发布版本1.3.0, 此次版本发布的最大亮点是新引入的DataFrame API 参考这里 这里

目前HDP有支持Spark 1.2.0(Spark SQL在版本1.1.0中产生)

Apache Spark 1.2.0 on YARN with HDP 2.2  例子程序在此

HDP2.2支持Spark1.2.0,等待测试特性,特别是Spark SQL,要提前了解当前版本的bug

数据源支持:

External data source API在支持了多种如JSON、Avro、CSV等简单格式的同时,还实现了Parquet、ORC等的智能支持;同时,通过这个API,开发者还可以使用JDBC将HBase这样的外部系统对接到Spark中。可以将外部数据来源作为临时表挂在的文件系统之中,减少了全部加载数据过来的种种纠结

技术分享

保存结果:

统一的load/save API

在Spark 1.2.0中,要想将SchemaRDD中的结果保存下来,便捷的选择并不多。常用的一些包括:

  • rdd.saveAsParquetFile(...)
  • rdd.saveAsTextFile(...)
  • rdd.toJSON.saveAsTextFile(...)
  • rdd.saveAsTable(...)

Spark SQL中缓存表一定要用cacheTable(“tableName”)这种形式,否则无法享受到列式存储带来的一系列好处

Using the JDBC data source and the JSON data source to join two tables together to find the traffic log fot the most recently registered users.

技术分享

先测试HDP最大支持Spark多大版本,再测试其抽取的整合方式,再测试其性能。

 

 
 
 
 
 
 
 

Spark SQL1.2与HDP2.2结合

标签:

原文地址:http://www.cnblogs.com/kxdblog/p/4471560.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!