关系数据库的连接和访问
1.从数据库中输入数据
DBInputFormat提供从数据库读取数据的格式
DBRecordReader提供读取数据记录的接口
Hadoop允许直接从数据库读取数据,但是这样的话频繁读取会大大加重数据库的负载,所以一般不建议这样做
一个比较好的解决方法是:用数据库中的dump工具将待分析的大量数据输出为文本数据文件,并上载到HDFS中进行处理。
2.向数据库中输出计算结果
DBOutputFormat提供向数据库中输出数据的格式
DBRecordWriter提供向数据库中写入数据记录的接口
DBConfiguration提供数据库配置和创建连接的接口
DBConfiguration 中的静态方法:
?
public static void configureDB(Job job,String driverClass,String dbUrl,String userName,String password)
?DBOutputFormat 中提供静态方法(指定需要写入的数据表和字段):
?
?
public static void setOutput(Job job,String tableName,String ...fieldNames)
示例:
Configuration conf = new Configuration(); Job job = new Job(conf,JobClass.class); job.setOutputFormat(DBOutputFormat.class); DBConfiguration.configureDB(job,"com.mysql.jdbc.Driver","jdbc:mysql://db.host.com/mydb","myname","mypassword"); DBOutputFormat.setOutput(job,"Customers","Name","Pho