PySpark操作HBase时设置scan参数
在用PySpark操作HBase时默认是scan操作,通常情况下我们希望加上rowkey指定范围,即只获取一部分数据参加运算。翻遍了spark的python相关文档,搜遍了google和stackoverflow也没有具体的解决方案。既然java和scala都支持,python肯定也支持的。
翻了一下hbase源码
setConf方法里原来是根据特定的字符串对scan进行配置,那么在Python里对conf就可以进行相应的设置,这些设置主要包括:
hbase.mapreduce.scan.row.starthbase.mapreduce.scan.row.stophbase.mapreduce.scan.column.familyhbase.mapreduce.scan.columnshbase.mapreduce.scan.timestamphbase.mapreduce.scan.timerange.starthbase.mapreduce.scan.timerange.endhbase.mapreduce.scan.maxversionshbase.mapreduce.scan.cacheblockshbase.mapreduce.scan.cachedrowshbase.mapreduce.scan.batchsize
首先创建测试表
hbase> create 'test', 'f1'
hbase> put 'test', 'row1', 'f1', 'value1'
hbase> put 'test', 'row2', 'f1', 'value2'
hbase> put 'test', 'row3', 'f1', 'value3'
hbase> put 'test', 'row4', 'f1', 'value4'
然后,设置scan范围的示例代码如下
sc = SparkContext(appName=settings.APP_NAME)
conf = {
"hbase.zookeeper.quorum": settings.HBASE_HOST,
"hbase.mapreduce.inputtable": "test",
"hbase.mapreduce.scan.row.start": "row2"
}
rdd = sc.newAPIHadoopRDD(
"org.apache.hadoop.hbase.mapreduce.TableInputFormat",
"org.apache.hadoop.hbase.io.ImmutableBytesWritable",
"org.apache.hadoop.hbase.client.Result",
keyConverter="org.valux.converters.ImmutableBytesWritableToStringConverter",
valueConverter="org.valux.converters.HBaseResultToStringConverter",
conf=conf)
result = rdd.collect()
for (k, v) in result
print k, v
org.valux.converters.ImmutableBytesWritableToStringConverterorg.valux.converters.HBaseResultToStringConverter 是我自己实现的两个转换类,也可以用spark默认自带的converter,具体可以参考hbase_inputformat.py,不过提交时请带上相应的jar包
PySpark操作HBase时设置scan参数的更多相关文章
- tomcat 启动时设置 java 参数,mark
在文件 startup.bat/.sh 中添加 set "JAVA_OPTS=-Xms2048m -Xmx4096m -XX:NewSize=256m -XX:MaxNewSize=102 ...
- Scala操作Hbase空指针异常java.lang.NullPointerException处理
Hbase版本:Hortonworks Hbase 1.1.2 问题描述:使用Scala操作Hbase时,发生空指针异常(java.lang.RuntimeException: java.lang.N ...
- Hbase第五章 MapReduce操作HBase
容易遇到的坑: 当用mapReducer操作HBase时,运行jar包的过程中如果遇到 java.lang.NoClassDefFoundError 类似的错误时,一般是由于hadoop环境没有hba ...
- Major compaction时的scan操作
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u014393917/article/details/24419355 Major compactio ...
- 安装ORACLE时在Linux上设置内核参数的含义
前两天看到一篇Redhat官方的Oracle安装文档,对于Linux内核参数的修改描述的非常清晰. 安装Oracle之前,除了检查操作系统的硬件和软件是否满足安装需要之外,一个重点就是修改内核参数,其 ...
- Microsoft.Web.Administration操作IIS7时的权限设置
在用Microsoft.Web.Administration操作IIS7时,你可能会遇到如下权限错误: 文件名: redirection.config错误: 由于权限不足而无法读取配置文件 如下图: ...
- 获取列表数据时,getList 设置默认参数:getList(page = 1),点击分页及前往时,传page参数,其他使用page的默认值:1
获取列表数据时,getList 设置默认参数:getList(page = 1),点击分页及前往时,传page参数,其他使用page的默认值:1
- Python操作HBase之happybase
安装Thrift 安装Thrift的具体操作,请点击链接 pip install thrift 安装happybase pip install happybase 连接(happybase.Conne ...
- HBase(六)HBase整合Hive,数据的备份与MR操作HBase
一.数据的备份与恢复 1. 备份 停止 HBase 服务后,使用 distcp 命令运行 MapReduce 任务进行备份,将数据备份到另一个地方,可以是同一个集群,也可以是专用的备份集群. 即,把数 ...
随机推荐
- computer使用快捷小技巧
1.快速打开运行 win+R 几个运行实用命令 notepad--------打开记事本 mspaint--------画图板 calc-----------启动计算器 compmgmt.msc-- ...
- 利用正则表达式去掉html代码
using System.Text.RegularExpressions; // 利用正则表达式去掉"<"和">"之间的内容. private st ...
- C# 为WebBrowser设置代理,打开网页
WebBrowser控件是基于IE浏览器的,所以它的内核功能是依赖于IE的,相信做.NET的人都知道. 今天的主题,和上一篇文章应该是差不多的,都是通过代理来实现功能的. 请看下面的代码: //1.定 ...
- 好!maximum-product-of-word-lengths
以后看到个数比较少,性能比较高,就要第一时间想到位操作! 这道题目mock没有通过.超时了...... 原来题目解法的思路非常非常好! 开始我关注于降低n*n的复杂度,但是这道题目复杂度高在每个字符串 ...
- git和其他版本控制系统的区别
所有除了Git以外的版本控制系统都使用增量存储方式来保存不同版本,而Git则在每一个commit时,保存一个整个文件的content copy,除非那个文件没有做过改动.Git和其他版本系统的主要区别 ...
- highCharts图表应用-实现多种图表的显示
在数据统计和分析业务中,有时需要在一个图表中将柱状图.饼状图.曲线图的都体现出来,即可以从柱状图中看出具体数据.又能从曲线图中看出变化趋势,还能从饼状图中看出各部分数据比重.highCharts可以轻 ...
- 【同行说技术】iOS程序员从小白到大神必读资料汇总
在文章<iOS程序员从小白到大神必读资料汇总(一)>里面介绍了很多iOS入门学习的资料,今天小编就发几篇技术进阶的文章,快来看看吧! 一.iOS后台模式开发指南 这个教程会教你在什么时候怎 ...
- django - 修改 自增长id,起始值
常常你会遇到这样的情况,需要自增长的起始值是 0,再次从 0开始. 两个选择: 1. drop table_name; django重新建表. 2. ALTER TABLE table_name AU ...
- ssl创建自签名的https通信
ssl协议:ssl在tcp之上,http之下.兼容底层协议.所以推广起来很容易. create a self-signed server certificate -- for test purpose ...
- js对象的引用
/*var a = [1,2,3]; var b = [1,2,3]; alert( a == b ); //false*/ //基本类型:赋值的时候只是值得复制 /* var a = 5; var ...