我正在使用Avro文件在HDFS中存储数据。我需要从一个avro文件中复制选定的列数据,并使用自己的模式文件(具有所选列信息)将其发送到同一集群中的另一个位置。我怎样才能做到这一点?是否可以使用Hive实现?或HDFS中是否有任何可以帮助我做到这一点的实用工具?
这是必需的,因为组必须能够访问整个表,而另一个组应该只能访问几列。因此,我需要它们位于HDFS中的一个单独位置,只有所需的架构和avro文件。
答案 0 :(得分:0)
有多种方法可以创建这样做,我会说最简单的方法是使用Hive或Spark。在配置单元中,您可以使用reader模式(仅使用所需的字段)创建表,并将表位置指向目标目录。之后,您需要的只是从源表中插入,只选择您想要的字段到读者表中。
正如评论一样,创建一个读者模式是一个非常好的解决方案,可以避免在这种情况下重复数据。如果没有严格要求创建数据的子集,我建议使用reader schemas