我想从数据库导出数据并转换为Avro + Parquet格式。 Sqoop支持Avro出口,但不支持Parquet。我尝试使用Apache Pig,Apache Crunch等将Avro对象转换为Parquet,但没有任何效果。
Apache pig给我“引起:org.apache.hadoop.mapreduce.lib.input.InvalidInputException:输入路径不存在”。但输入路径存在于该位置。
Apache Crunch总是抛出:java.lang.ClassNotFoundException:未找到类org.apache.crunch.impl.mr.run.CrunchMapper“尽管我已将其添加到Hadoop lib路径中。
将数据从DB导出为Parquet格式的最佳和简便方法是什么?
答案 0 :(得分:2)
我使用Hive。
在Avro数据上创建外部表。 创建一个空的Parquet表。
然后 插入覆盖表PARQUET_TABLE 从AVRO_TABLE中选择*。
超级简单:)
答案 1 :(得分:2)
最新的sqoop(我认为1.4.6)支持导入包含Parquet格式数据的文件,也可以导入到Parquet并创建相关的Hive表。
答案 2 :(得分:0)
我能够使用sqoop1将mysql表转储到avro文件中,然后使用avro2parquet https://github.com/tispratik/avro2parquet转换工具将avro文件转换为镶木地板文件。一旦它在镶木地板,我可以上传到hdfs并在其上创建一个蜂巢表。如果在0.13之前运行配置单元版本,则需要在配置单元中使用镶木地板插件。 Hive原生支持镶木地板0.13。