public class MyAction {
public static void main(String[] args) {
UserGroupInformation ugi = UserGroupInformation.createRemoteUser("hadoop");
ugi.doAs(new PrivilegedAction<Void>() {
public Void run() {
try{
System.setProperty("path.separator", ":");
Configuration conf = new Configuration();
//可以设置用到的第三方jar
conf.set("tmpjars", "/tmp/jars/mysql-connector-java-5.1.7-bin.jar");
DBConfiguration.configureDB(conf, "com.mysql.jdbc.Driver", "jdbc:mysql://172.168.8.54:3306/test","hadoop", "hadoop");
conf.set("mapred.job.tracker", "127.0.0.1:9001");
conf.set("fs.default.name", "hdfs://127.0.0.1:9000");
conf.set("hadoop.job.ugi", "hadoop");
conf.set("hbase.zookeeper.quorum","127.0.0.1,127.0.0.1,127.0.0.1");
conf.set("hbase.zookeeper.property.clientPort", "2181");
Job job = new Job(conf);
job.setJobName("MyAction");
job.setJarByClass(MyAction.class);
job.setOutputFormatClass(DBOutputFormat.class);
Scan scan = new Scan();
TableMapReduceUtil.initTableMapperJob("misdn_catetory13", scan, MyMapper.class, MapOut.class, NullWritable.class, job);
DBOutputFormat.setOutput(job, "misdn_catetory13", new String[]{"mid","mfamily","mcolumn","mvalue"});
job.waitForCompletion(true);
}catch(Exception e){
e.printStackTrace();
}
return null;
}});
}
}
public class MyMapper extends TableMapper<MapOut,NullWritable> {
@Override
protected void map(ImmutableBytesWritable key, Result value,Context context)
throws IOException, InterruptedException {
String rkey=new String(key.get());
List<KeyValue> list=value.list();
for(KeyValue kv:list){
MapOut mapOut=new MapOut();
mapOut.setKey(rkey);
mapOut.setFamily(new String(kv.getFamily()));
mapOut.setColumn(new String(kv.getQualifier()));
mapOut.setValue(new String(kv.getValue()));
context.write(mapOut, NullWritable.get());
}
}
}
public class MapOut implements WritableComparable<MapOut>,DBWritable {
private String key;
private String family;
private String column;
private String value;
public void readFields(DataInput in) throws IOException {
key=in.readUTF();
family=in.readUTF();
column=in.readUTF();
value=in.readUTF();
}
public void write(DataOutput out) throws IOException {
out.writeUTF(key);
out.writeUTF(family);
out.writeUTF(column);
out.writeUTF(value);
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getFamily() {
return family;
}
public void setFamily(String family) {
this.family = family;
}
public String getColumn() {
return column;
}
public void setColumn(String column) {
this.column = column;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public int compareTo(MapOut o) {
return this.key.compareTo(o.getKey());
}
public void readFields(ResultSet arg0) throws SQLException {
// TODO Auto-generated method stub
}
public void write(PreparedStatement ps) throws SQLException {
ps.setString(1, key);
ps.setString(2, family);
ps.setString(3, column);
ps.setString(4, value);
}
分享到:
相关推荐
- 数据更新:Hive不支持数据的改写和添加,适合只读或近乎只读的场景,而数据库如MySQL支持插入、更新等操作。 - 索引:Hive没有内置索引,查询时需要全表扫描,而数据库通常有索引机制,能快速定位数据。 3. ...
这里我们使用JDBC连接MySQL,使用HBase Java API操作HBase。以下是一个简单的示例: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop....
MySQL到HBase的数据迁移是大数据领域常见的操作,尤其是在传统关系型数据库向分布式NoSQL数据库转换的过程中。本资源“mysql2hbase.7z”提供了一种解决方案,由于Sqoop已经停止更新,不再支持较新的HBase版本,因此...
例如,可以使用批处理工具如Hadoop MapReduce进行大数据量的迁移,或者通过设置合理的HBase表分区策略来提高写入性能。 总之,“基于Mysql的表转HBase小Demo”是一个很好的学习资源,它演示了如何在Java环境中实现...
【Hive、MySQL、HBase数据互导】是大数据领域常见的数据处理操作,涉及三个不同的数据存储系统。Hive是一个基于Hadoop的数据仓库工具,它允许使用类SQL的查询语言HiveQL对大规模数据进行批处理和分析。MySQL是一种...
这些程序会定义MapReduce作业的具体逻辑,包括如何从数据库中读取数据,如何映射这些数据到HBase或HDFS,以及如何执行Reduce操作。hbasetable.PNG可能是一个示例HBase表的截图,用于展示数据导入后的结构。readme....
在这个实例中,我们看到MapReduce被用来从Hbase数据库中提取海量数据,对其进行处理,然后将统计结果存储到MySQL数据库中。这个过程涉及到大数据处理的核心技术,下面我们将深入探讨这些知识点。 首先,**Hbase** ...
2. **DBInputFormat**: 这是一个特殊的输入格式,允许MapReduce作业从关系型数据库(如MySQL,PostgreSQL等)或者NoSQL数据库(如HBase)中读取数据。`DBInputFormat`提供了一种方式,使得开发者可以轻松地从数据库...
1. **Hadoop**:Hadoop是Apache软件基金会的一个开源项目,主要由HDFS(Hadoop Distributed File System)和MapReduce两部分组成。HDFS是一种分布式文件系统,可以将大规模的数据存储在集群中,确保数据的高可用性和...
在本项目中,HBase可以用来存储用户与电影的交互信息,如用户的评分、观看历史等,支持快速的随机读取和写入操作,方便实时推荐。 5. **MySQL**:MySQL是一个关系型数据库管理系统,用于存储结构化数据,如用户账户...
本文将深入探讨如何有效地进行HBase的全量数据导入,特别是针对MySQL数据的迁移至HBase场景。 #### HBase数据结构与Hadoop生态集成 HBase基于Hadoop框架构建,其底层存储依赖于HDFS(Hadoop Distributed File ...
本资源摘要信息包含了Hadoop期中考试测试的重要知识点,涵盖了Hadoop的各个组件,包括HDFS、MapReduce、HBase、Hive、Presto、YARN、Flume、Zookeeper等。下面是根据给定的文件信息生成的知识点: 一、HDFS 1. ...
同时,掌握HBase的安装、配置和基本操作,如创建表、插入数据、查询数据等,是学习HBase的基础。 【HBase与其他技术的集成】 HBase可以与Apache Spark集成,用于实时数据处理和分析。Phoenix是SQL查询引擎,允许...
关系型数据库(如MySQL、Oracle、SQL Server等)与非关系型数据库(如Hbase)在数据存储和处理上有着显著的区别。关系型数据库遵循ACID(原子性、一致性、隔离性和持久性)原则,适合结构化数据的存储,而Hbase作为...
本压缩包"hadop安装文件.rar"提供了关于Hadoop及其相关组件(如Hive、HBase、Sqoop和MySQL)的安装步骤,这对于初学者和系统管理员来说是一份宝贵的资源。 首先,我们来详细了解一下Hadoop。Hadoop由Apache软件基金...
2. **HBase**:HBase是一个基于Hadoop的分布式数据库,适合实时读写操作,尤其适合半结构化和非结构化数据。它提供了一个高可靠性、高性能、列式存储、可伸缩的数据库。 - **HBase安装与配置**: - 在Hadoop集群...
过程中可能遇到的问题包括网络配置、权限设置、依赖冲突等,解决这些问题通常需要查阅官方文档、社区经验分享以及实际操作中的调试。这样的集群不仅提供了数据处理的完整链条,也是大数据工程师学习和实践的重要平台...
- HBase主要通过Java API或类似HBase shell的工具进行操作,查询功能相对简单,但在大数据处理中可以配合MapReduce或Spark进行高效计算。 6. 应用场景: - RDBMS适用于需要事务处理、复杂查询和数据一致性的业务...
同时,需要具备数据库操作知识,例如使用MySQL或HBase存储用户和电影信息。最后,推荐系统的算法实现也是关键,可能包括基于用户的协同过滤、基于物品的协同过滤,或者是深度学习方法如神经网络模型。 总的来说,这...
Java到HBase的数据迁移是一个复杂的过程,涉及到数据库的读取、数据转换以及HBase的写入操作。在本文中,我们将深入探讨这个过程,包括关键概念、步骤、工具和技术。 首先,我们需要理解Java和HBase的基本特性。...