我已将mysql表导出到镶木地板文件(基于avro)。现在我想读取该文件中的特定列。我怎样才能完全阅读特定列?我正在寻找java代码示例。
是否有api我可以传递我需要的列并返回一个2D数组表?
答案 0 :(得分:1)
如果您可以使用配置单元,那么创建配置单元表并发出简单的选择查询将是最简单的选择。
create external table tbl1(<columns>) location '<file_path>' stored as parquet;
select col1,col2 from tbl1;
//this works in hive 0.14
您也可以使用JDBC驱动程序从java程序中执行此操作。
否则,如果你想完全保留在java中,你需要通过排除所有字段而不是你想要获取的字段来修改avro模式。然后,当您读取文件时,将修改后的模式作为读取器模式提供,它将只读取包含的列。但是你会得到原始的avro记录,排除的字段无效,而不是2D数组。
要修改架构,请查看org.apache.avro.Schema和org.apache.avro.SchemaBuilder。确保修改的模式与原始模式兼容。
答案 1 :(得分:0)
选项:
答案 2 :(得分:0)
您还可以使用本机解析拼贴文件的apache drill。