hbase scala 实例_【开发案例】Spark案例:Spark on HBase样例

本文提供了Spark与HBase集成的Java和Scala代码示例,包括创建表、插入数据和读取数据。适用于FusionInsight HD V100R002C70和V100R002C80版本。示例展示了如何在Spark中使用HBase API进行数据操作,包括连接HBase、创建表、插入数据以及读取数据的详细步骤。
摘要由CSDN通过智能技术生成

Spark案例:Spark on HBase样例

1.1场景说明

适用版本

FusionInsight HD V100R002C70、FusionInsight HD V100R002C80。

场景说明

用户可以使用Spark调用HBase的接口来操作HBase表的功能。在Spark应用中,用户可以自由使用HBase的接口来实现创建表、读取表、往表中插入数据等操作。

数据规划

首先需要把数据文件放置在HDFS系统里。

1.本地新建文本文件,将data文件中的内容复制保存到input_data1.txt。

2.在HDFS上建立一个文件夹,“/tmp/input”,并上传input_data1.txt到此目录,命令如下:

a.在HDFS客户端,执行如下命令获取安全认证。

cd /opt/hadoopclient

kinit

b.在Linux系统HDFS客户端使用命令hadoop

fs -mkdir /tmp/input(hdfs

dfs命令有同样的作用),创建对应目录。

c.在Linux系统HDFS客户端使用命令hadoop

fs -put input_data1.txt /tmp/input,上传数据文件。

1.2开发思路

1.创建HBase表。

2.往HBase表中插入数据。

3.通过Spark Application读取HBase表的数据。

1.3样例代码说明

1.3.1JAVA代码样例

功能简介

在Spark应用中,通过使用HBase接口来实现创建表,读取表,往表中插入数据等操作。

代码样例

下面代码片段仅为演示,具体代码参见SparkOnHbaseJavaExample:

样例:创建HBase表

public class TableCreation {

public static void main (String[] args) throws IOException {

SparkConf conf = new

SparkConf().setAppName("CollectFemaleInfo");

JavaSparkContext jsc = new

JavaSparkContext(conf);

Configuration hbConf = HBaseConfiguration.create(jsc.hadoopConfiguration());

// 创建和hbase的连接通道

Connection connection = ConnectionFactory.createConnection(hbConf);

// 声明表的描述信息

TableName userTable  =

TableName.valueOf("shb1");

HTableDescriptor tableDescr = new

HTableDescriptor(userTable);

tableDescr.addFamily(new

HColumnDescriptor("info".getBytes()));

// 创建表

System.out.println("Creating

table shb1. ");

Admin admin = connection.getAdmin();

if (admin.tableExists(userTable)) {

admin.disableTable(userTable);

admin.deleteTable(userTable);

}

admin.createTable(tableDescr);

connection.close();

jsc.stop();

System.out.println("Done!");

}

}

样例:在HBase表中插入数据

public class TableInputData {

public static void main(String[] args) throws IOException {

// 建立连接hbase的配置参数,此时需要保证hbase-site.xml在classpath中

SparkConf conf = new

SparkConf().setAppName("CollectFemaleInfo");

JavaSparkContext jsc = new JavaSparkContext(conf);

Configuration hbConf =

HBaseConfiguration.create(jsc.hadoopConfiguration());

// 声明表的信息

Table table = null;

String tableName = "shb1";

byte[] familyName = Bytes.toBytes("info");

Connection connection = null;

try {

// 获取hbase连接

connection =

ConnectionFactory.createConnection(hbConf);

// 获取table对象

table =

connection.getTable(TableName.valueOf(tableName));

List

String>> data = jsc.textFile(args[0]).map(

new Function

Tuple4>() {

public

Tuple4 call(String s) throws Exception {

String[] tokens = s.split(",");

return new Tuple4(tokens[0], tokens[1],

tokens[2], tokens[3]);

}

}).collect();

Integer i = 0;

for (Tuple4

String> line : data) {

Put put = new

Put(Bytes.toBytes("row" + i));

put.addColumn(familyName,

Bytes.toBytes("c11"), Bytes.toBytes(line._1()));

put.addColumn(familyName,

Bytes.toBytes("c12"), Bytes.toBytes(line._2()));

put.addColumn(familyName,

Bytes.toBytes("c13"), Bytes.toBytes(line._3()));

put.addColumn(familyName,

Bytes.toBytes("c14"), Bytes.toBytes(line._4()));

i += 1;

table.put(put);

}

} catch (IOException e) {

e.printStackTrace();

} finally {

if (table != null) {

try {

// 关闭table对象

table.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if (connection != null) {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值