我使用sqoop1.4.6将数据从rdbms导入hdfs,使用snappycodec作为压缩,avro作为文件格式。我安装了以下组件
hadoop 2.8.0版
Spark2.1.0
Hive1.2.2
scala 2.11.8版
Cassandra3.10
当我尝试使用以下命令将mysql表导入hdfs时:
sqoop import --connect jdbc:mysql://******:****/retail_db --username****--password****--table order_items --compress --compression-codec org.apache.hadoop.io.compress.SnappyCodec --target-dir /user/test/order_items --as-avrodatafile
我得到以下错误:
Could not initialize class org.xerial.snappy.Snappy
它在试图找到这个类后超时。
关于这个问题,我尝试了上面提到的解决方案,比如挂载tmp和添加snapyjar文件(已经存在了),但都不起作用。我有什么遗漏吗?
1条答案
按热度按时间epfja78i1#
在尝试了几种解决方法之后,我终于找到了问题所在。在sqoop命令中使用--verbose标志表明有多个snappy-.jar文件从不同的组件导入,例如
$hadoop\u home/share/hadoop/common/lib/
$hadoop\u home/share/hadoop/mapreduce/lib/
$sqoop\u主页/lib/
所以包括了3个时髦的jar。
解决方案:我确保在本例中只包含1个文件,并且解决了错误。