hadoop pig vertica是hadoop pig udf loader and storer的DB版,在github上开源,感谢感谢
本文就不贴代码了,附件里有源码,想了解的可以下载
先贴一张vertica的目录
其中verticaLoader,verticaStorer是vertica给出的接口类,是hadoop pig的loader和storer的UDF
verticaLoader对于读取数据库分解为多个maper,其在于读取数据库的分页,以及sql语句的等价拆分。
verticalStorer则相对简单,只是简单的类型转换,insert语句到数据库
verticalLoader和verticaStorer现在只是做了简单的功能实现,对于连接池,多数据库支持,元数据等都没有考虑,并且loader的split策略过于单一。
这里贴出verticaLoader:
public class VerticaLoader extends LoadFunc implements LoadMetadata{ ...... private RecordReader<?, ?> reader = null; //设置用户签名 @Override public void setUDFContextSignature(String signature) { System.out.println("setUDFContextSignature invocation...."+signature); this.contextSignature = signature; } @Override public InputFormat<?, ?> getInputFormat() throws IOException { System.out.println("getInputFormat invocation..."+getQuery()+"-----------"+getParameters()); return new VerticaInputFormat(getQuery(), getParameters()); } private Tuple translate(VerticaRecord v) throws IOException { int columns = v.size(); Tuple result = TupleFactory.getInstance().newTuple(columns); for (int i = 0; i < columns; i++) { Object obj = v.get(i); Integer type = v.getType(i); ...... } } return result; } //获取reader读取后的数据,返回数据tuple @Override public Tuple getNext() throws IOException { .... return translate(value); } //读取前的准备 @Override @SuppressWarnings("rawtypes") public void prepareToRead(RecordReader reader, PigSplit split) throws IOException { ..... this.reader = reader; } //固定读取的schemal,这里去读db的datameta @Override public ResourceSchema getSchema(String location, Job job) throws IOException { 。。。。。 } //设置loader的地址,在pig script loader中的location,这里包含数据库 //信息,以及sql语句 @Override public void setLocation(String location, Job job) throws IOException { ...... } @Override public String[] getPartitionKeys(String location, Job job) { return null; } @Override public void setPartitionFilter(Expression filter) { } @Override public ResourceStatistics getStatistics(String location, Job job) { return null; } //Important to override because of PIG-1378 @Override public String relativeToAbsolutePath(String location, Path curdir) throws IOException { try { String enc = java.net.URLEncoder.encode(location, "UTF-8"); return enc; } catch (java.io.UnsupportedEncodingException e) { throw new IOException(e); } } }在verticaloader中方法getInputFormat,返回verticaInputFormat,它继承于org.apache.hadoop.mapreduce.InputFormat<LongWritable, VerticaRecord>。
想必不用多说它的实现,自定义hadoop inputFormat的帖子有不少,不在累述
相关推荐
- **生态系统的扩展**:Hadoop 生态系统还包括了诸如 Hive、Pig、Spark 等工具,这些工具进一步增强了 Hadoop 的功能,使其能够更好地满足企业的需求。 #### 其他大数据工具 除了 SAP HANA 和 Hadoop 之外,市场上...
此外,Syncsort的DMX-h在性能上表现优秀,对比Pig + Java,其处理速度可以达到3倍以上,且无需编写复杂的代码,简化了开发流程。 综上所述,普兰大数据解决方案和Syncsort的DMX-h工具为企业提供了全面、高效的...
Hadoop生态还包括MapReduce(分布式计算框架)、Hive(数据仓库工具)、Pig(数据分析工具)、R和Mahout(机器学习库)等。此外,还有ZooKeeper(分布式协调服务)和Avro(数据序列化系统)等子项目,共同支持大数据...
此外,还有各种处理和分析工具,如MapReduce、流计算(如Apache Storm)、Hive用于查询统计、Pig用于数据清洗、R语言进行统计分析,以及Mahout用于机器学习。 【Hadoop及其组件】 Hadoop是一个开源的分布式系统...
列式数据库如HP Vertica和Greenplum,优化了对大数据的分析性能,特别适合于大数据量的查询和分析任务,因为它们能快速处理特定列的数据。 7. 技术适用的场合 不同的大数据技术适用于不同的业务场景。例如,分布式...
最后,对比不同框架如Exadata TDW+FineBI、HDP(Hortonworks Data Platform)、Phoenix、Stinger、Presto、Shark、Pig等,了解它们的优势和劣势,结合具体业务场景和技术需求,做出最适合的决策。例如,Phoenix支持SQL...
魅族大数据平台架构包括AnyStream Agent、Flume Collector、Metaq、Spark Streaming、DB、AnyStream Agent、HDFS、Zookeeper、YARN、MR、Hive/Pig、Kerberos、LDAP、Spark、Mysql、Oracle、Vertica、Hbase等组件。...
平台的核心包括离线处理组件如HDFS、Zookeeper、YARN、MapReduce、Hive和Pig,以及安全认证系统如Kerberos和LDAP。此外,Spark的引入提升了数据分析能力,而Mysql和ELK(Elasticsearch、Logstash、Kibana)组合提供...