开发者社区> 松伯> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Spark读写Hbase中的数据

简介: def main(args: Array[String]) { val sparkConf = new SparkConf().setMaster("local").setAppName("cocapp").
+关注继续查看
def main(args: Array[String])  {
    val sparkConf = new SparkConf().setMaster("local").setAppName("cocapp").set("spark.kryo.registrator", classOf[HBaseConfiguration].getName)
      .set("spark.executor.memory", "4g")
    val sc: SparkContext = new SparkContext(sparkConf)
    val sqlContext = new HiveContext(sc)
    val mySQLUrl = "jdbc:mysql://localhost:3306/yangsy?user=root&password=yangsiyi"
    val rows = sqlContext.jdbc(mySQLUrl, "person")
    val tableName = "spark"
    val columnFamily = "cf" //rows.first().getString(1)
    val configuration = HBaseConfiguration.create();
    configuration.set(TableInputFormat.INPUT_TABLE, "test");
    val admin = new HBaseAdmin(configuration)
    val hBaseRDD = sc.newAPIHadoopRDD(configuration, classOf[TableInputFormat],
        classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable],
    classOf[org.apache.hadoop.hbase.client.Result])
      hBaseRDD.count()

def toHbase(rows: DataFrame,tableName : String,columnFamily: String)   {
    val configuration = HBaseConfiguration.create();
    val admin = new HBaseAdmin(configuration)
    if (admin.tableExists(tableName)) {
      print("table Exists")
      admin.disableTable(tableName);
      admin.deleteTable(tableName);
    }
    configuration.addResource("hbase-site.xml")
    val tableDesc = new HTableDescriptor(tableName)
    tableDesc.addFamily(new HColumnDescriptor(columnFamily))
    admin.createTable(tableDesc)
    rows.foreachPartition { row =>
      val table = new HTable(configuration, tableName)

      row.foreach { a =>
        val put = new Put(Bytes.toBytes("row1"))
        put.add(Bytes.toBytes(columnFamily), Bytes.toBytes("coulumn1"), Bytes.toBytes(a.getString(0)))
        table.put(put)
        println("insert into success")
      }
    }

然而并没有什么乱用,发现一个问题,就是说,在RDD取值与写入HBASE的时候,引入外部变量无法序列化。。。。。。网上很多说法是说extends Serializable ,可是尝试无效。Count()是可以获取到,但是如果我要在configuration中set列,然后进行查询就会报错了。暂时各种办法尝试无果,还在想办法,也不明原因。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《基于HBase和Spark构建企业级数据处理平台》电子版地址
基于HBase和Spark构建企业级数据处理平台
0 0
spark-shell操作hudi并使用hbase作为索引
本文介绍spark-shell操作hudi并使用hbase作为索引
0 0
Maxcompute Spark 访问 阿里云 Hbase
引子 本来这个东西是没啥好写的,但是在帮客户解决问题的时候,发现链路太长,不能怪客户弄不出来,记录一下 需求列表 MaxCompute Spark包 (写文章时刻为版本 0.32.1, 请自行更新,本文不是文档) Spark 配置 spark.
485 0
如何使用MaxCompute Spark读写阿里云Hbase
通过Spark on MaxCompute来访问阿里云的Hbase,需要设置网络安全组、Hbase的白名单和配置Spark的参数
0 0
Spark on HBase Connector:如何在Spark侧设置HBase参数
前言 X-Pack Spark可以使用Spark on HBase Connector直接对接HBase数据库,读取HBase数据表数据。有时在读取HBase时需要设置HBase的一些参数调整性能,例如通过设置hbase.client.scanner.caching的大小调整读取HBase数据的性能。
651 0
数据库云HBase 版本spark服务支持D1机型
信息摘要: 数据库云HBase 版本spark服务支持D1机型,适合起步超过20T数据库的大客户,每GB存储单价最低。适用客户: 大企业版本/规格功能: spark支持D1机型产品文档: 数据库云HBase 版本spark服务支持D1机型,具体spark服务参考https://help.
356 0
HBase+Spark技术双周刊 第八期
【点击订阅HBase+Spark技术双周刊】 近期线上直播 【直播资料下载】HBase多语言访问 线下沙龙最全资料下载往期回顾 阿里云栖开发者沙龙 - BigData NoSQL Meetup(上海站)【精彩直播+最全资料下载】阿里云栖开发者沙龙 - BigData NoSQL Meetup(上海站)业内大咖齐聚,各大技术社区支持,与你畅聊 BigData NoSQL中国HBase技术社区第十届meetup——HBase生态实践(杭州站)
中国HBase技术社区第十届meetup——HBase生态实践(杭州站)回顾,4位数据库技术大咖共话HBase技术实践。
6567 0
HBase+Spark技术双周刊 第七期
近期线上直播&线下沙龙最全资料下载往期回顾&问答专栏
2029 0
+关注
松伯
技术专家 专注于大数据领域 博客园地址:https://www.cnblogs.com/yangsy0915/
文章
问答
文章排行榜
最热
最新
相关电子书
更多
云HBaseSQL及分析 ——Phoenix&Spark
立即下载
基于HBase和Spark构建企业级数据处理平台
立即下载
Apache Spark -Apache HBase Con
立即下载