2016-11-16 97 views
0

我想從使用Java的Mysql加載到HDFS中。我的Hadoop版本2.7.2和Sqoop 1.4.6。我收到以下異常Sqoop從Mysql導入到Hadoop hdfs使用Java

錯誤security.UserGroupInformation:PriviledgedActionException 爲:XXXX引起:org.apache.hadoop.ipc.RemoteException:服務器IPC 9版本無法與客戶端版本通信4 16/11/16十七點40分57秒 錯誤tool.ImportTool:遇到IOException異常運行導入作業: org.apache.hadoop.ipc.RemoteException:服務器IPC版本9不能 與客戶端版本通信4

下面是代碼

public void importData() { 
    SqoopOptions options = new SqoopOptions(); 
    options.setConnectString("jdbc:mysql://localhost:3306/Sample"); 
    options.setUsername("UserName"); 
    options.setPassword("Password"); 
    options.setNumMappers(1); 
    options.setSqlQuery("SELECT * FROM categories WHERE $CONDITIONS  limit 10"); 
    options.setHadoopMapRedHome(HADOOP_HOME); 
    options.setTargetDir(WAREHOUSE_DIR); 
    int ret = new ImportTool().run(options); 
} 

我已經添加了以下相關

apache-logging-log4j.jar 
commons.io_2.0.1.jar 
commons-cli-1.2.jar 
commons-configuration-1.7.jar 
commons-httpclient-3.0.1.jar 
commons-lang-2.4.jar 
commons-logging-1.1.1.jar 
hadoop-core-1.2.1.jar 
jackson-core-asl-1.8.8.jar 
jackson-mapper-asl-1.8.8.jar 
mysql-connector-java-5.1.34.jar 
sqoop-1.4.6.jar 

幫我解決這問題。

回答

0

您正在使用Hadoop版本2.7.2。

但依賴它Hadoop的核心1.2.1.jar這是Hadoop的1.x的

用Hadoop-common.jar替換hadoop-core-1.2.1.jar - >https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common/2.7.2

希望這有助於

+0

我刪除了hadoop核心jar並添加了hadoop-common.jar 2.7.2它詢問了其他一些依賴關係,我補充說現在得到以下異常:java.lang.ClassNotFoundException:org.apache.hadoop.util.PlatformName。 –

+0

添加此https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-auth/2.7.2 –

+0

當sqoop提供替代方法將表導出到hdfs時,這樣做的必要性是什麼。一種方法是使用sql將數據寫入文件,然後將文件複製到hdfs.Field分隔符和行分隔符也可以被指定。示例