我需要将数据从关系数据库移动到HDFS,但我想将数据保存为parquet-avro文件格式。查看sqoop documentation似乎我的选项是--as-parquetfile或--as-avrodatafile,但不是两者的混合。根据我对以下blog / picture的理解,parquet-avro的工作方式是它是一个嵌入了avro模式的Parquet文件,并且是一个将avro对象转换并保存为Parquet文件以及反之的转换器。
我最初的假设是,如果我使用sqoop选项--as-parquetfile,那么保存到 Parquet 文件中的数据将丢失avro模式,并且转换器将无法工作。但是,在将数据保存为 Parquet 文件格式的sqoop code中,它似乎确实使用了与avro相关的实用程序,但我不确定发生了什么。有人可以澄清吗?如果我无法使用Squoop进行此操作,我还有哪些其他选择?
最佳答案
parquet-avro
主要是一个方便层,因此您可以将存储在Apache Parquet中的数据读/写到Avro对象中。当您再次使用parquet-avro
阅读Parquet时,将从Parquet模式中推断出Avro模式(或者,您应该能够指定一个明确的Avro模式)。因此,您应该对--as-parquetfile
满意。
关于hadoop - 如何使用Sqoop以Parquet-Avro文件格式保存数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42774556/