- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试将一个表从 MySQL 导入到 Hive。我测试过我正在与 MySQL 正确建立连接。现在所有的表数据也包装在 jar 中。然后在我得到这个 NoSuchMethodError 之后。我在 Windows 8 上运行 MySQL,Hadoop Hive 在 VirtualBox 中作为 Horton Sandbox 运行。
org.apache.hadoop.mapred.JobConf.getCredentials() 的 NoSuchMethodError
错误:
INFO: Initializing JVM Metrics with processName=JobTracker, sessionId=
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.mapred.JobConf.getCredentials()Lorg/apache/hadoop/security/Credentials;
at org.apache.sqoop.mapreduce.db.DBConfiguration.setPassword(DBConfiguration.java:158)
at org.apache.sqoop.mapreduce.db.DBConfiguration.configureDB(DBConfiguration.java:144)
at org.apache.sqoop.mapreduce.DataDrivenImportJob.configureInputFormat(DataDrivenImportJob.java:171)
at org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:231)
at org.apache.sqoop.manager.SqlManager.importTable(SqlManager.java:600)
at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:413)
at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:502)
at SqoopJavaInterface.importToHive(SqoopJavaInterface.java:66)
at SqoopJavaInterface.main(SqoopJavaInterface.java:32)
这是我的源代码:-
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.sqoop.tool.ImportTool;
import com.cloudera.sqoop.SqoopOptions;
public class SqoopJavaInterface {
private static final String JOB_NAME = "Sqoop Hive Job";
private static final String MAPREDUCE_JOB = "Hive Map Reduce Job";
private static final String DBURL = "jdbc:mysql://localhost:3316/db";
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String USERNAME = "user";
private static final String PASSWORD = "password";
private static final String HADOOP_HOME = "/home/master/apps/hadoop-1.0.4";
private static final String JAR_OUTPUT_DIR = "/home/master/data";
private static final String HIVE_HOME = "/home/master/apps/hive-0.10.0";
private static final String HIVE_DIR = "/user/hive/warehouse/";
private static final String WAREHOUSE_DIR = "hdfs://localhost:9000/user/hive/warehouse/student";
private static final String SUCCESS = "SUCCESS !!!";
private static final String FAIL = "FAIL !!!";
/**
* @param table
* @throws IOException
*/
public static void main(String args[]) throws IOException{
importToHive("some_table");
}
public static void importToHive(String table) throws IOException {
System.out.println("SqoopOptions loading .....");
Configuration config = new Configuration();
// Hive connection parameters
config.addResource(new Path(HADOOP_HOME+"/conf/core-site.xml"));
config.addResource(new Path(HADOOP_HOME+"/conf/hdfs-site.xml"));
config.addResource(new Path(HIVE_HOME+"/conf/hive-site.xml"));
FileSystem dfs =FileSystem.get(config);
/* MySQL connection parameters */
SqoopOptions options = new SqoopOptions(config);
options.setConnectString(DBURL);
options.setTableName(table);
options.setDriverClassName(DRIVER);
options.setUsername(USERNAME);
options.setPassword(PASSWORD);
options.setHadoopMapRedHome(HADOOP_HOME);
options.setHiveHome(HIVE_HOME);
options.setHiveImport(true);
options.setHiveTableName(table);
options.setOverwriteHiveTable(true);
options.setFailIfHiveTableExists(false);
options.setFieldsTerminatedBy(',');
options.setOverwriteHiveTable(true);
options.setDirectMode(true);
options.setNumMappers(1); // No. of Mappers to be launched for the job
options.setWarehouseDir(WAREHOUSE_DIR);
options.setJobName(JOB_NAME);
options.setMapreduceJobName(MAPREDUCE_JOB);
options.setTableName(table);
options.setJarOutputDir(JAR_OUTPUT_DIR);
System.out.println("Import Tool running ....");
ImportTool it = new ImportTool();
int retVal = it.run(options);
if (retVal == 0) {
System.out.println(SUCCESS);
} else {
System.out.println(FAIL);
}
}
}
最佳答案
幸运的是,我自己找到了问题的答案。我必须在构建路径中包含一个 jar 文件 hadoop-0.20.2+737-core.jar而不是 hadoop-0.20.2-core.jar。看起来它是同一文件的修改版本,其中包含包含 getCredentials() 方法的 JobConf 类。
问题解决了,但我仍然对这两个版本感到困惑?有没有人知道实际的区别是什么?
关于java - NoSuchMethodError : JobConf. getCredentials(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24354054/
我正在尝试将一个表从 MySQL 导入到 Hive。我测试过我正在与 MySQL 正确建立连接。现在所有的表数据也包装在 jar 中。然后在我得到这个 NoSuchMethodError 之后。我在
我正在学习使用 AWS Cognito。我已经设置了一个用户池和一个身份池。 代码(简化): cognitoUser.authenticateUser(authenticationDetails, {
据我所知,flutter firebase 身份验证中有许多已弃用的方法。 这是我的代码; FlatButton( child: Text("Con
当我尝试模拟时 SecurityContextHolder.getContext().getAuthentication().getCredentials() 要获得 UserDetails 的 Ma
我创建了一种使用 API key 对用户进行身份验证的方法,这要归功于实现 SimplePreAuthenticatorInterface 接口(interface)的类 A。一切正常(用户已成功通过
我有以下问题。我是 flutter 和 firebase 的新手,我该如何解决。谢谢 void _handleFirebase() async { GoogleSignInAuthentica
新的 Firebase for Unity 支持刚刚发布到 Beta 版,我正在尝试用它来实现 Auth。我已经有一个 Google 登录,它使用 GooglePlayGames.PlayGamesP
我创建了一个简单的 spring web mvc 应用程序,但有一个问题。身份验证后,我尝试获取身份验证对象,但由于某种原因,它的凭据为空。 在这个项目中,我有一个自定义的 Authenticatio
本文整理了Java中org.apache.solr.common.cloud.ZkCredentialsProvider.getCredentials()方法的一些代码示例,展示了ZkCredenti
错误:线程“主”java.lang.NoSuchMethodError 中的异常:org.apache.hadoop.security.UserGroupInformation.getCredenti
我是一名优秀的程序员,十分优秀!