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 任务进行备份,将数据备份到另一个地方,可以是同一个集群,也可以是专用的备份集群. 即,把数 ...
随机推荐
- 寻找最小的k个数
1. 能想到的最直接的办法,就是对数组进行排序,最好的排序算法的时间复杂性为O(n*logn),这一个方法请参照各种排序算法. 2. 另外申请一个k空间数组,依次更改里面的最大值,每做一次最多要扫描一 ...
- [原]Water Water Search Problems' Set~Orz【updating...】
[HDU] [POJ] 作者:u011652573 发表于2014-4-30 10:39:04 原文链接 阅读:30 评论:0 查看评论
- php关于static关键字
静态属性与方法可以在不实例化类的情况下调用,直接使用类名::方法名的方式进行调用.静态属性不允许对象使用->操作符调用.静态方法中,$this伪变量不允许使用.可以使用self,parent,s ...
- opencv实现KNN手写数字的识别
人工智能是当下很热门的话题,手写识别是一个典型的应用.为了进一步了解这个领域,我阅读了大量的论文,并借助opencv完成了对28x28的数字图片(预处理后的二值图像)的识别任务. 预处理一张图片: 首 ...
- java socket编程基础
1. [代码]读操作Runable 1 package com.hrd.test.socket; import java.io.BufferedReader; import java.io.IOExc ...
- 3D volume texture和cube map
cube map texture可以理解为6个面的纸盒, sample的时候使用vector射线型的sample. volume texture可以理解是一摞2D texture,sample的时候用 ...
- the specified child alread has a parent
用 TestFragment extends Fragment @Override public View onCreateView(LayoutInflater inflat ...
- HDU 1160 FatMouse's Speed
半个下午,总算A过去了 毕竟水题 好歹是自己独立思考,debug,然后2A过的 我为人人的dp算法 题意: 为了支持你的观点,你需要从给的数据中找出尽量多的数据,说明老鼠越重速度越慢这一论点 本着“指 ...
- svn备份脚 本
一直用这套脚本备份,脚本主体虽不是原创,但是从网上得到后因为不能运行也进行了些修改,前两天看到有人问关于SVN备份的问题,今天又把脚本整理了一下,解决了不能循环备份多个配置库的问题.希望对大家有所帮助 ...
- jquery 连写注释;siblings() 方法;jQuery 的3种滑动方法;slideUp()向上滑动;slideDown()向下滑动;slideToggle()来回滑动
首先我们看两个连写注释 第一个: /* 点击头像,显示基本资料 */ $(".f-chatTit a.avatar").click(function(){ $(this).hi ...