`

mapreduce 操作hbase、mysql

阅读更多
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、Hbase、mysql的区别.docx

    - 数据更新:Hive不支持数据的改写和添加,适合只读或近乎只读的场景,而数据库如MySQL支持插入、更新等操作。 - 索引:Hive没有内置索引,查询时需要全表扫描,而数据库通常有索引机制,能快速定位数据。 3. ...

    java代码将mysql表数据导入HBase表

    这里我们使用JDBC连接MySQL,使用HBase Java API操作HBase。以下是一个简单的示例: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop....

    mysql2hbase.7z

    MySQL到HBase的数据迁移是大数据领域常见的操作,尤其是在传统关系型数据库向分布式NoSQL数据库转换的过程中。本资源“mysql2hbase.7z”提供了一种解决方案,由于Sqoop已经停止更新,不再支持较新的HBase版本,因此...

    基于Mysql的表转HBase小Demo

    例如,可以使用批处理工具如Hadoop MapReduce进行大数据量的迁移,或者通过设置合理的HBase表分区策略来提高写入性能。 总之,“基于Mysql的表转HBase小Demo”是一个很好的学习资源,它演示了如何在Java环境中实现...

    Hive、MySQL、HBase数据互导

    【Hive、MySQL、HBase数据互导】是大数据领域常见的数据处理操作,涉及三个不同的数据存储系统。Hive是一个基于Hadoop的数据仓库工具,它允许使用类SQL的查询语言HiveQL对大规模数据进行批处理和分析。MySQL是一种...

    hadoop的mapreduce把oracle/mysq导入到hbase和hdfs中的程序

    这些程序会定义MapReduce作业的具体逻辑,包括如何从数据库中读取数据,如何映射这些数据到HBase或HDFS,以及如何执行Reduce操作。hbasetable.PNG可能是一个示例HBase表的截图,用于展示数据导入后的结构。readme....

    MapReduce实例

    在这个实例中,我们看到MapReduce被用来从Hbase数据库中提取海量数据,对其进行处理,然后将统计结果存储到MySQL数据库中。这个过程涉及到大数据处理的核心技术,下面我们将深入探讨这些知识点。 首先,**Hbase** ...

    hadoop中Map-Reduce使用示例,输入(DBInputFormat),输出(DBOu-MR_HBase.zip

    2. **DBInputFormat**: 这是一个特殊的输入格式,允许MapReduce作业从关系型数据库(如MySQL,PostgreSQL等)或者NoSQL数据库(如HBase)中读取数据。`DBInputFormat`提供了一种方式,使得开发者可以轻松地从数据库...

    本项目为大数据基础镜像组件,其中包括Hadoop、Spark、Hive、Tez、Hue、Flink、MySQL等

    1. **Hadoop**:Hadoop是Apache软件基金会的一个开源项目,主要由HDFS(Hadoop Distributed File System)和MapReduce两部分组成。HDFS是一种分布式文件系统,可以将大规模的数据存储在集群中,确保数据的高可用性和...

    电影推荐网站(基于hadoop生态的大数据项目,使用hbase和MySQL数据库,利用协同过滤算法给出用户电影推荐).zip

    在本项目中,HBase可以用来存储用户与电影的交互信息,如用户的评分、观看历史等,支持快速的随机读取和写入操作,方便实时推荐。 5. **MySQL**:MySQL是一个关系型数据库管理系统,用于存储结构化数据,如用户账户...

    hbase海量数据的全量导入方法

    本文将深入探讨如何有效地进行HBase的全量数据导入,特别是针对MySQL数据的迁移至HBase场景。 #### HBase数据结构与Hadoop生态集成 HBase基于Hadoop框架构建,其底层存储依赖于HDFS(Hadoop Distributed File ...

    Hadoop期中考试测试.pdf

    本资源摘要信息包含了Hadoop期中考试测试的重要知识点,涵盖了Hadoop的各个组件,包括HDFS、MapReduce、HBase、Hive、Presto、YARN、Flume、Zookeeper等。下面是根据给定的文件信息生成的知识点: 一、HDFS 1. ...

    HBase学习笔记(个人整理)

    同时,掌握HBase的安装、配置和基本操作,如创建表、插入数据、查询数据等,是学习HBase的基础。 【HBase与其他技术的集成】 HBase可以与Apache Spark集成,用于实时数据处理和分析。Phoenix是SQL查询引擎,允许...

    关系型数据库的数据导入Hbase

    关系型数据库(如MySQL、Oracle、SQL Server等)与非关系型数据库(如Hbase)在数据存储和处理上有着显著的区别。关系型数据库遵循ACID(原子性、一致性、隔离性和持久性)原则,适合结构化数据的存储,而Hbase作为...

    hadoop安装文件.rar,内涵hadoop安装的步骤word,hadoop、hive、hbase、sqoop、mysql等

    本压缩包"hadop安装文件.rar"提供了关于Hadoop及其相关组件(如Hive、HBase、Sqoop和MySQL)的安装步骤,这对于初学者和系统管理员来说是一份宝贵的资源。 首先,我们来详细了解一下Hadoop。Hadoop由Apache软件基金...

    大数据Hadoop+HBase+Spark+Hive集群搭建教程(七月在线)1

    2. **HBase**:HBase是一个基于Hadoop的分布式数据库,适合实时读写操作,尤其适合半结构化和非结构化数据。它提供了一个高可靠性、高性能、列式存储、可伸缩的数据库。 - **HBase安装与配置**: - 在Hadoop集群...

    Hadoop+Spark+Hive+HBase+Oozie+Kafka+Flume+Flink+ES+Redash等详细安装部署

    过程中可能遇到的问题包括网络配置、权限设置、依赖冲突等,解决这些问题通常需要查阅官方文档、社区经验分享以及实际操作中的调试。这样的集群不仅提供了数据处理的完整链条,也是大数据工程师学习和实践的重要平台...

    Difference between HBase and RDBMS

    - HBase主要通过Java API或类似HBase shell的工具进行操作,查询功能相对简单,但在大数据处理中可以配合MapReduce或Spark进行高效计算。 6. 应用场景: - RDBMS适用于需要事务处理、复杂查询和数据一致性的业务...

    基于javaweb + mapreduce的小型电影推荐系统

    同时,需要具备数据库操作知识,例如使用MySQL或HBase存储用户和电影信息。最后,推荐系统的算法实现也是关键,可能包括基于用户的协同过滤、基于物品的协同过滤,或者是深度学习方法如神经网络模型。 总的来说,这...

    java2hbase.rar

    Java到HBase的数据迁移是一个复杂的过程,涉及到数据库的读取、数据转换以及HBase的写入操作。在本文中,我们将深入探讨这个过程,包括关键概念、步骤、工具和技术。 首先,我们需要理解Java和HBase的基本特性。...

Global site tag (gtag.js) - Google Analytics