读写自定义格式的HDFS数据

读写自定义格式的HDFS数据

使用MapReduce和CREATE EXTERNAL TABLE命令来读写HDFS上的自定格式的数据。

要读取自定义格式的数据:

  1. 创作并且运行一个MapReduce任务,该任务创建格式为Greenplum数据库可访问的数据的一份拷贝。
  2. 使用CREATE EXTERNAL TABLE读取数据到Greenplum数据库中。

例 1 - 从HDFS读取自定义格式数据

要写自定义格式的数据:

  1. 编写数据。
  2. 创作并且运行一个MapReduce程序来将格式转换成自定义格式并且将它放置在Hadoop分布式文件系统上。

例 2 - 从Greenplum数据库写自定义格式的数据到HDFS

MapReduce代码用Java编写。Greenplum提供了在MapReduce代码中使用的Java API。Javadoc在$GPHOME/docs目录中可以找到。要查看Javadoc,展开文件gnet-1.1-javadoc.tar并且打开index.html。Javadoc记载了下列包:

com.emc.greenplum.gpdb.hadoop.io
com.emc.greenplum.gpdb.hadoop.mapred
com.emc.greenplum.gpdb.hadoop.mapreduce.lib.input
com.emc.greenplum.gpdb.hadoop.mapreduce.lib.output

HDFS cross-connect包包含了Java库,其中包含了包GPDBWritableGPDBInputFormatGPDBOutputFormat。这些Java包可以在$GPHOME/lib/hadoop中找到。用cross-connect包编译并运行MapReduce任务。例如,如果使用Greenplum HD 1.0的Hadoop发布,用gphd-1.0-gnet-1.0.0.1.jar编译和运行MapReduce任务。

要让Java库对所有的Hadoop用户都可用,Hadoop集群的管理员应该把相应的gphdfs连接器的jar文件放在$HADOOP_HOME/lib目录中并且重启任务跟踪器。如果没有这样做,Hadoop用户仍能够使用gphdfs连接器的jar文件,但是要用分布式缓存技术。