Pyspark访问Hbase
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl/p/7347167.html 转载请注明出处
记录自己最近抽空折腾虚拟机环境时用spark2.0的pyspark访问Hbase1.2时遇到的问题及解决过程.
连接准备
快速用pyspark访问Hbase中的表进行测试,代码如下(注意,其中的host和inputtable是已经定义好的主机和表名变量)
spark = SparkSession.builder.master("yarn-client").appName("statistics").getOrCreate()
hbaseconf = {"hbase.zookeeper.quorum":host,"hbase.mapreduce.inputtable":inputtable}
keyConv = "org.apache.spark.examples.pythonconverters.ImmutableBytesWritableToStringConverter"
valueConv = "org.apache.spark.examples.pythonconverters.HBaseResultToStringConverter"
hbase_rdd = spark.sparkContext.newAPIHadoopRDD(\
"org.apache.hadoop.hbase.mapreduce.TableInputFormat",\
"org.apache.hadoop.hbase.io.ImmutableBytesWritable",\
"org.apache.hadoop.hbase.client.Result",\
keyConverter=keyConv, valueConverter=valueConv, conf=hbaseconf)
hbase_rdd.count()
发现问题
执行上面的pyspark代码测试,结果报错如下图所示

额,看着这个熟悉的异常让我莫名尴尬,ClassNotFoundException...那就是说此时spark访问hbase时依赖的一些hbase jar包没有在classpath中找到.那么将其加入classpath即可.
解决问题
找到hbase1.2根目录下lib文件夹下的所有jar包,将其拷贝到spark所在节点的自己专门存放jar包的目录下,我这里路径假设是/home/hadoop/scripts/sparkStatistics/workJars/hbaseJars,然后有二种方法将其加入spark的classpath,如下
- 修改spark-env.sh中的SPARK_CLASSPATH,比如
export SPARK_CLASSPATH=/home/hadoop/scripts/sparkStatistics/workJars/hbaseJars/*
或者
- 修改spark-defaults.conf,如下
spark.executor.extraClassPath=/home/hadoop/scripts/sparkStatistics/workJars/hbaseJars/*
spark.driver.extraClassPath=/home/hadoop/scripts/sparkStatistics/workJars/hbaseJars/*
二种方式都可以,但是第一种修改spark-env.sh的方式在spark1.0之前比较推荐,之后的版本建议用第二种方式.
我用的第二种方式,修改完成后重启spark集群.测试pyspark代码,访问hbase表成功无异常.
Pyspark访问Hbase的更多相关文章
- HBase(二): c#访问HBase之股票行情Demo
上一章完成了c#访问hbase的sdk封装,接下来以一个具体Demo对sdk进行测试验证.场景:每5秒抓取指定股票列表的实时价格波动行情,数据下载后,一方面实时刷新UI界面,另一方面将数据放入到在内存 ...
- HBase(一): c#访问hbase组件开发
HDP2.4安装系列介绍了通过ambari创建hbase集群的过程,但工作中一直采用.net的技术路线,如何去访问基于Java搞的Hbase呢? Hbase提供基于Java的本地API访问,同时扩展了 ...
- PySpark操作HBase时设置scan参数
在用PySpark操作HBase时默认是scan操作,通常情况下我们希望加上rowkey指定范围,即只获取一部分数据参加运算.翻遍了spark的python相关文档,搜遍了google和stackov ...
- 使用C#和Thrift来访问Hbase实例
今天试着用C#和Thrift来访问Hbase,主要参考了博客园上的这篇文章.查了Thrift,Hbase的资料,结合博客园的这篇文章,终于搞好了.期间经历了不少弯路,下面我尽量详细的记录下来,免得大家 ...
- windows平台下用C#访问HBase
Hadoop中的HBase有多种数据访问方式,ubuntu里可以用hbase shell查看操作hbase数据库,但windows平台下需要用thrift对它进行访问. 例如hadoop安装在/usr ...
- JAVA API访问Hbase org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=32
Java使用API访问Hbase报错: 我的hbase主节点是spark1 java代码访问hbase的时候写的是ip 结果运行程序报错 不能够识别主机名 修改主机名 修改主机hosts文 ...
- PHP通过thrift2访问HBASE
前一段时间需要在网页上显示HBASE查询的结果,考虑用PHP来实现,在网上搜了一下,普遍都是用thrift作为接口来实现的. 参考博文: http://www.cnblogs.com/scotom ...
- Java访问Hbase
1.kerberos验证 a.下载对应版本JCE(Java Cryptography Extension),解压拷贝local_policy.jar/US_export_policy.jar到$JAV ...
- 使用C#通过Thrift访问HBase
前言 因为项目需要要为客户程序提供C#.Net的HBase访问接口,而HBase并没有提供原生的.Net客户端接口,可以通过启动HBase的Thrift服务来提供多语言支持. Thrift介绍 环境 ...
随机推荐
- radio 标签状态改变时 触发事件
<html> <head> <script src="jquery1.7.2.js"></script> </head> ...
- 运维角度浅谈:MySQL数据库优化
日志君导读: 一个成熟的数据库架构并非一開始设计就具备高可用.高伸缩等特性的.它是随着用户量的添加,基础架构才逐渐完好. 作者:zhenliang8.本文转自51CTO博客,点击原文阅读查看网页版文章 ...
- mysql触发器小实验
今天实验了一下mysql的触发器 mysql> use test; Database changed mysql> desc time; +-------+---------------- ...
- Xmanager连接图形界面
1.编辑gnome配置文件vim /etc/gdm/custom.conf # GDM configuration storage [daemon]RemoteGreeter= /usr/libexe ...
- ORACLE WITH AS 用法,创建临时表
语法: with tempName as (select ....) select ... –针对一个别名with tmp as (select * from tb_name) –针对多个别名with ...
- 单反手动对焦M档,AV,TV,P,A,A-DEP
今天科普一下单反相机的自动对焦设置,以佳能EOS600为例,在镜头的后方会看到一个af,mf的开关.af为auto focus的缩写,自动对焦.mf为手动对焦 自动曝光模式的种类: AV:光圈优先自动 ...
- Exchange Port
Get-POPSettings-110 Get-IMAPSettings-143 Exchange Network Port References Exchange Server 2000 http: ...
- android sdk 中跨平台部分
跨平台部分: platforms samples sources system-images 这几个可以直接拷贝即可
- lowB三人组算法-冒泡排序-选择排序-插入排序
冒泡排序 时间复杂度:O(n2) 算法稳定 第一趟,从第一个数开始,相邻两个数比较,大的数交换放后,交换到最后位置得出一个第一大数 第二趟,从第一个数开始,相邻两个数比较,大的数交换放后,交换到倒数 ...
- SpringBoot 与 Web开发
1. SpringBoot 静态资源映射规则 webjars:以JAR包的方式引入静态资源; 所有/webjars/**,都去classpath:/META-INF/resources/webjars ...