我正在使用sqoop 1.4.6使用snappyCodec作为压缩和avro作为文件格式将数据从RDBMS导入到hdfs。我安装了以下组件
Hadoop 2.8.0
Spark 2.1.0
hive 1.2.2
斯卡拉2.11.8
Cassandra 3.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和添加snappy jar文件(已经存在),但是它们都不起作用。我有什么想念的吗?

最佳答案

在尝试了几种解决方案之后,我终于找到了问题所在。在sqoop命令中使用--verbose标志显示从不同的组件(例如,类似组件)导入了多个snappy-xxx.jar文件

  • $ HADOOP_HOME / share / hadoop / common / lib /
  • $ HADOOP_HOME / share / hadoop / mapreduce / lib /
  • $ SQOOP_HOME / lib /
    因此,其中包含3个活泼的 jar 。

  • 解决方案:
    在这种情况下,我确保仅包含1个文件,并且已解决错误。

    关于hadoop - 错误:无法初始化类org.xerial.snappy.Snappy,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45050937/

    10-12 19:53