Spark SQL1.2与HDP2.2结合
1.hbase相同的rowkey里存在多条记录问题的调研解决方案
VERSIONS => 3,Hbase version 最多插入三条记录
将一个集群hbase中表 "VerticalDataTable" 数据插入另一张表时遇到问题,本来有十几个版本,但是只插入了3个版本(还是可以插入成功)
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多大版本,再测试其抽取的整合方式,再测试其性能。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。