Spark读写Hbase中的数据
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列,然后进行查询就会报错了。暂时各种办法尝试无果,还在想办法,也不明原因。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
ambari server内存溢出
抛出的异常信息如下: java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.A...
- 下一篇
在Ubuntu环境部署Apache Spark集群
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/50166991 在Ubuntu环境部署Apache Spark集群 作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 1、软件环境 本文主要讲述怎样在Ubuntu系统上部署Apache Spark独立集群(Standalone Cluster)的过程。所需的软件如下: Ubuntu 15.10 x64 Apache Spark 1.5.1 2、安装所需的一切 # sudo apt-get install git -y # sudo apt-add-repository ppa:webupd8team/java -y # sudo apt-get update -y # sudo apt-get install oracle-java8-installer -y # sudo apt-get install oracle-java8-set-default ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Mario游戏-低调大师作品
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8