Mapreduce 拼花地板:将特定列读入内存

Mapreduce 拼花地板:将特定列读入内存,mapreduce,avro,parquet,Mapreduce,Avro,Parquet,我已将mysql表导出到拼花文件(基于avro)。现在我想从该文件中读取特定列。我怎样才能完整地阅读特定的专栏?我正在寻找java代码示例 有没有api可以让我传递所需的列并返回表的2D数组?如果可以使用配置单元,那么创建配置单元表并发出简单的select查询将是迄今为止最简单的选择 创建存储为拼花地板的外部表tbl1()位置“”; 从tbl1中选择col1、col2; //这在蜂巢0.14中起作用 您也可以从java程序中使用JDBC驱动程序来实现这一点 否则,如果您想完全停留在java中,

我已将mysql表导出到拼花文件(基于avro)。现在我想从该文件中读取特定列。我怎样才能完整地阅读特定的专栏?我正在寻找java代码示例


有没有api可以让我传递所需的列并返回表的2D数组?

如果可以使用配置单元,那么创建配置单元表并发出简单的select查询将是迄今为止最简单的选择

创建存储为拼花地板的外部表tbl1()位置“”;
从tbl1中选择col1、col2;
//这在蜂巢0.14中起作用
您也可以从java程序中使用JDBC驱动程序来实现这一点

否则,如果您想完全停留在java中,则需要通过排除除要获取的字段以外的所有字段来修改avro模式。然后,当您读取文件时,将修改后的模式作为读取器模式提供,它将只读取包含的列。但您将获得原始avro记录,其中排除的字段为空,而不是2D数组

要修改模式,请查看org.apache.avro.schema和org.apache.avro.SchemaBuilder。确保修改后的架构与原始架构兼容。

选项:

  • 使用配置单元表创建具有存储格式parquet的所有列的表,并通过指定列名读取所需列
  • 为表创建Thrift并使用Thrift字段从代码(Java或Scala)读取数据

  • 您还可以使用apache drill本机解析拼花地板文件