我正在使用avro工具从HDFS中的avro文件生成模式文件,并使用以下命令将其转储到Linux文件系统:
hadoop jar /usr/bin/Avro/avro-tools-1.8.1.jar getschema /dw/hpm/ap_drg/ap_drg.avro > usr/bin/StageSchema/ap_drg.avsc
这很有用,可以获取我需要的文件。然而;我希望架构文件在HDFS而不是Linux文件系统。如何更改此命令才能完成此操作?还有另一种方法我应该这样做吗?
答案 0 :(得分:3)
玩了一会儿,终于找到了有用的东西:
hadoop jar /usr/bin/Avro/avro-tools-1.8.1.jar getschema /dw/hpm/ap_drg/ap_drg.avro | hadoop fs -put -f - /dw/schemas/hpm/ap_drg/ap_drg.avsc
这将从hdfs上的Avro文件中提取Avro架构,并写入hdfs中的Avro架构文件。 -f
将确保覆盖任何现有的架构文件。