hdfs可以存放no sql数据吗
发布网友
发布时间:2022-04-08 09:40
我来回答
共1个回答
热心网友
时间:2022-04-08 11:09
你好,实体类定义代码:
<pre name="code" class="java">package com.qin.operadb;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.maprece.lib.db.DBWritable;
/***
* 封装数据库实体信息
* 的记录
*
* 搜索大数据技术交流群:376932160
*
* **/
public class PersonRecoder implements Writable,DBWritable {
public int id;//对应数据库中id字段
public String name;//对应数据库中的name字段
public int age;//对应数据库中的age字段
@Override
public void readFields(ResultSet result) throws SQLException {
this.id=result.getInt(1);
this.name=result.getString(2);
this.age=result.getInt(3);
}
@Override
public void write(PreparedStatement stmt) throws SQLException {
stmt.setInt(1, id);
stmt.setString(2, name);
stmt.setInt(3, age);
}
@Override
public void readFields(DataInput arg0) throws IOException {
// TODO Auto-generated method stub
this.id=arg0.readInt();
this.name=Text.readString(arg0);
this.age=arg0.readInt();
}
@Override
public void write(DataOutput out) throws IOException {
// TODO Auto-generated method stub
out.writeInt(id);
Text.writeString(out, this.name);
out.writeInt(this.age);
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "id: "+id+" 年龄: "+age+" 名字:"+name;
}
}
</pre>
MR类的定义代码,注意是一个Map Only作业:
<pre name="code" class="java">package com.qin.operadb;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.lib.IdentityRecer;
import org.apache.hadoop.maprece.Job;
import org.apache.hadoop.maprece.Mapper;
import org.apache.hadoop.maprece.lib.db.DBConfiguration;
import org.apache.hadoop.maprece.lib.db.DBInputFormat;
import org.apache.hadoop.maprece.lib.output.FileOutputFormat;
public class ReadMapDB {
/**
* Map作业读取数据记录数
*
* **/
private static class DBMap extends Mapper<LongWritable, PersonRecoder , LongWritable, Text>{
@Override
protected void map(LongWritable key, PersonRecoder value,Context context)
throws IOException, InterruptedException {
context.write(new LongWritable(value.id), new Text(value.toString()));
}
}
public static void main(String[] args)throws Exception {
JobConf conf=new JobConf(ReadMapDB.class);
//Configuration conf=new Configuration();
// conf.set("mapred.job.tracker","192.168.75.130:9001");
//读取person中的数据字段
// conf.setJar("tt.jar");
//注意这行代码放在最前面,进行初始化,否则会报
DBConfiguration.configureDB(conf, "com.mysql.jdbc.Driver", "jdbc:mysql://192.168.211.36:3306/test", "root", "qin");
/**要读取的字段信息**/
String fileds[]=new String[]{"id","name","age"};
/**Job任务**/
Job job=new Job(conf, "readDB");
System.out.println("模式: "+conf.get("mapred.job.tracker"));
/**设置数据库输入格式的一些信息**/
DBInputFormat.setInput(job, PersonRecoder.class, "person", null, "id", fileds);
/***设置输入格式*/
job.setInputFormatClass(DBInputFormat.class);
job.setOutputKeyClass(LongWritable.class);
job.setOutputValueClass(Text.class);
job.setMapperClass(DBMap.class);
String path="hdfs://192.168.75.130:9000/root/outputdb";
FileSystem fs=FileSystem.get(conf);
Path p=new Path(path);
if(fs.exists(p)){
fs.delete(p, true);
System.out.println("输出路径存在,已删除!");
}
FileOutputFormat.setOutputPath(job,p );
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
大数据存储的三种方式
HDFS能够存储大规模数据集,并提供高吞吐量的数据访问。例如,在处理日志文件、社交媒体数据流或大规模科学实验数据时,HDFS能够通过其分布式架构有效地管理这些数据,使得数据处理和分析更加高效。其次,NoSQL数据库是另一种重要的大数据存储方式。与传统的关系型数据库不同,NoSQL数据库不需要固定的数据表结...
2.HDFS是否属于NoSQL数据库?请分析一下HDFS作为数据库的不足之处_百 ...
HDFS(Hadoop Distributed File System)不被归类为NoSQL数据库,因为它是分布式文件系统而不是数据库。HDFS是Apache Hadoop生态系统的一部分,旨在存储和处理大规模数据集。尽管HDFS非常适合用于存储和处理大规模的结构化和非结构化数据,但作为数据库,它存在以下一些不足之处:1. 缺乏事务支持:HDFS不支持...
有了hdfs为什么还要hbase
有了HDFS(Hadoop Distributed File System)之后,确实可以满足大规模数据存储和处理的基本需求,它提供了跨机器的数据共享和数据分布式的存储能力。然而,HBase(Hadoop Database)作为一种特殊的NoSQL数据库,其设计目标就是适合在HDFS上运行,并且在HDFS的基础上提供了更加高效的数据库操作功能。具体来说...
常见的 NoSQL 数据库有哪些?
NoSQL数据库的一大亮点在于其分布式架构,这意味着它们能够轻松扩展,以适应不断增长的数据量。同时,它们强调的是弱一致性,这意味着在某些场景下,数据的实时一致性可能不如关系型数据库严格,但换来的是更高的性能和可用性。此外,它们对多种数据类型的兼容性,使得它们在处理半结构化和非结构化数据...
hdfs和mysql有什么区别?大数据离线数据存储在mysql还是hdfs比较好?
这区别可大了,不是一个概念。mysql是传统的关系型数据库。hdfs是nosql hadoop的存储方式。hdfs是分布式的自带高可用存储,文件格式跟mysql的存储引擎不一样。大数据离线存储,当然是hdfs更合适
什么类型的数据库适合存储视频数据?
2. NoSQL数据库:NoSQL数据库是一种非关系型的数据库,更适合处理大量非结构化的数据,如视频数据。例如,MongoDB和Cassandra等NoSQL数据库可以存储大量的视频数据,并提供更好的可扩展性和性能。3. 分布式文件系统:分布式文件系统,如Hadoop的分布式文件系统(HDFS)和Google的文件系统(GFS),也可以...
hbase是一种什么数据库
HBase是一个基于Apache Hadoop的面向列的NoSQL数据库,是Google BigTable的开源实现。它运行在HDFS之上,为Hadoop提供类似于BigTable规模的服务。HBase针对半结构化数据,是一个多版本的、可伸缩的、高可靠的、高性能的、分布式的和面向列的动态模式数据库。它采用了BigTable的数据模型增强的稀疏排序映射表...
大数据和云计算关系
传统的结构化数据库已经无法满足数据多样性的存储要求,因此在RDBMS基础上增加了两种类型,一种是hdfs可以直接应用于非结构化文件存储,一种是nosql类数据库,可以应用于结构化和半结构化数据存储。从存储层的搭建来说,关系型数据库,NoSQL数据库和hdfs分布式文件系统三种存储方式都需要。业务应用根据实际的...
什么是NoSQL数据库
开始使用它们时,这些数据库才流行起来。该数据库最明显的优势是摆脱了一组固定的列、连接和类似SQL的查询语言的限制。有时,NoSQL这个名称也可能表示“不仅仅SQL”,来确保它们可能支持SQL。 NoSQL数据库使用诸如键值、宽列、图形或文档之类的数据结构,并且可以如JSON之类的不同格式存储。
互联网如何海量存储数据?
Couchbase支持千万级海量数据存储 分布式文件系统 如果针对单个大文件,譬如超过100MB的文件,使用NoSQL存储就不适当了。使用分布式文件系统的优势在于,分布式文件系统隔离底层数据存储和分布的细节,展示给用户的是一个统一的逻辑视图。常用的分布式文件系统有GoogleFileSystem、HDFS、MooseFS、Ceph、GlusterFS、...