zoukankan      html  css  js  c++  java
  • 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表成功无异常.

  • 相关阅读:
    没想到吧?这货比 open 更适合读取文件
    卸载 PyCharm!这才是 Python 小白的最理想的 IDE
    git 会保留所有的提交吗?不会!
    C# 在构造函数内调用虚方法
    【转】第一个汇编器是怎么实现的
    SQL Server查询数据库所有表名与表说明
    Vue实现节流,防止重复提交
    mysql 查询json数组(一)
    VScode怎么在代码折叠后,插入新的内容
    Vue 通过调用百度API获取地理位置-经度纬度省份城市
  • 原文地址:https://www.cnblogs.com/cssdongl/p/7347167.html
Copyright © 2011-2022 走看看