解决方法:
1、使用Linux命令,如下:
String tmpFile = "/tmp" + File.separator + TableUtil.TABLE_PREFIX_MAILING_MEMBER + "@" + mailListId + ".log"; String scp_command = String.format("scp %s x.x.x.x:%s", fileKey, tmpFile); logger.info("Current TaskId#" + taskId + " : " + scp_command); Process process = Runtime.getRuntime().exec(scp_command); logger.info("Current TaskId#" + taskId + ", SCP_COMMAND : <OUTPUT>"); InputStreamReader inputStream = new InputStreamReader(process.getInputStream()); BufferedReader inputReader = new BufferedReader(inputStream); String line = null; while((line = inputReader.readLine()) != null) { logger.info(line); } logger.info("Current TaskId#" + taskId + ", SCP_COMMAND : </OUTPUT>"); if (inputReader != null) { inputReader.close(); } if (inputStream != null) { inputStream.close(); } logger.info("Current TaskId#" + taskId + ", SCP_COMMAND : <ERROR>"); InputStreamReader errorStream = new InputStreamReader(process.getErrorStream()); BufferedReader errorReader = new BufferedReader(errorStream); line = null; while((line = errorReader.readLine()) != null) { logger.info(line); } logger.info("Current TaskId#" + taskId + ", SCP_COMMAND : </ERROR>"); if (errorReader != null) { errorReader.close(); } if (errorStream != null) { errorStream.close(); } process.waitFor(); logger.info("Current TaskId#" + taskId + " : " + scp_command); Thread.sleep(5000); // 赋权限 String chown_command = String.format("%s '%s %s'", "ssh x.x.x.x", "chown hadoop:hadoop -R", tmpFile); logger.info("Current TaskId#" + taskId + " :" + chown_command); process = Runtime.getRuntime().exec(chown_command); logger.info("Current TaskId#" + taskId + ", CHOWN_COMMAND : <OUTPUT>"); inputStream = new InputStreamReader(process.getInputStream()); inputReader = new BufferedReader(inputStream); line = null; while((line = inputReader.readLine()) != null) { logger.info(line); } logger.info("Current TaskId#" + taskId + ", CHOWN_COMMAND : </OUTPUT>"); if (inputReader != null) { inputReader.close(); } if (inputStream != null) { inputStream.close(); } logger.info("Current TaskId#" + taskId + ", CHOWN_COMMAND : <ERROR>"); errorStream = new InputStreamReader(process.getErrorStream()); errorReader = new BufferedReader(errorStream); line = null; while((line = errorReader.readLine()) != null) { logger.info(line); } logger.info("Current TaskId#" + taskId + ", CHOWN_COMMAND : </ERROR>"); if (errorReader != null) { errorReader.close(); } if (errorStream != null) { errorStream.close(); } process.waitFor(); logger.info("Current TaskId#" + taskId + " : " + chown_command);
2、使用如下方法:
public static void copyLocalFileHdfs(String localPath, String hdfsPath) throws IOException { Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://Ucluster"); conf.set("dfs.nameservices", "Ucluster"); conf.set("dfs.ha.namenodes.Ucluster", "xx,yy"); conf.set("dfs.namenode.rpc-address.Ucluster.xx","hostname:port"); conf.set("dfs.namenode.rpc-address.Ucluster.yy","hostname:port"); conf.set("dfs.client.failover.proxy.provider.Ucluster", "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"); try { FileSystem fs = FileSystem.get(conf); Path src = new Path(localPath); Path dst = new Path(hdfsPath); fs.copyFromLocalFile(src, dst); } catch (Exception e) { e.printStackTrace(); } }
相关推荐
Java JDBC(Java Database ...通过这种方式,你可以构建更复杂的数据处理应用程序,如数据导入、ETL流程或数据分析任务。在实际项目中,为了提高性能和可维护性,可以考虑使用Spring JdbcTemplate或MyBatis等ORM框架。
Hive提供了丰富的接口供外部应用访问,包括Hive JDBC和Hive SerDe(Serializer/Deserializer),Java程序可以利用这些接口读取Hive表中的数据。 2. **Spark计算框架**: Spark是大数据处理的开源框架,以其高效、...
在Java中访问Hive,需要Hive的JDBC驱动,这个驱动是`org.apache.hive.jdbc.HiveDriver`,它实现了Java的`java.sql.Driver`接口,让Java程序能够通过JDBC URL连接到Hive服务器。 4. **HTTPClient库**:描述中提到的...
本压缩包文件"jdbc_hive_jar"包含了实现Java程序通过JDBC连接到Hive所需的所有jar包。这些jar包通常包含Hive JDBC驱动,它实现了与Hive服务器通信的协议,使得Java应用程序能够执行HQL(Hive SQL)查询并获取结果。 ...
接下来,我们需要创建一个Java程序来读取Excel文件。使用POI库,你可以通过`XSSFWorkbook`对象打开Excel文件,然后通过`XSFSheet`访问工作表,再通过`XSSFRow`和`XSSFCell`获取单元格数据。以下是一个简单的示例代码...
1. **Hive的JDBC驱动**:如`hive-jdbc-*.jar`,这是连接Hive服务器的桥梁,允许Java应用程序通过JDBC接口执行HQL语句。 2. **Hadoop相关库**:包括`hadoop-client-*.jar`、`hadoop-common-*.jar`等,这些是与Hadoop...
使用Sqoop将数据从Hive导入MySQL**: - 使用Sqoop连接到Hive并指定要导出的表。 - 设置目标MySQL数据库的连接信息,包括用户名、密码、数据库名和表名。 - 执行Sqoop命令,将Hive表的数据导入到MySQL中。 **3. ...
在大数据量的情况下,单线程导入数据到Elasticsearch效率会非常低,因此多线程技术成为了一个理想的解决方案。 ### 多线程导入的实践 为了提高效率,作者对现有的从MySQL到Elasticsearch导入数据的工具进行了改造...
在大数据分析领域,Hive...通过这个“hive影评案例”,学习者可以实践如何使用Java编写Hive应用程序,同时了解Hive在大数据分析中的实际应用。掌握这些技能将有助于理解大数据处理的流程,提高解决复杂数据问题的能力。
这里我们关注的是如何使用Jest客户端将数据从Hive导入到Elasticsearch。Jest是一个Java REST客户端,它为Elasticsearch提供了一个简单易用的接口。以下是这个过程的详细步骤和相关知识点: 1. **Jest使用示例** ...
2. `hive-jdbc.jar`:允许通过JDBC驱动程序连接到Hive服务器,从而在Java应用程序或任何支持JDBC的语言中进行Hive查询。 3. `hive-metastore.jar`:提供Hive元数据服务,存储表结构、分区信息等元数据,是Hive的中央...
Apache Hive是大数据处理领域的一个重要组件,它是一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供SQL(HQL)查询功能,从而简化了对大数据集的处理工作。Hive构建在Hadoop之上,充分利用了...
Hive JDBC驱动是连接Hadoop生态系统中的Hive数据仓库的重要桥梁,它允许用户通过Java数据库连接(JDBC)标准来访问Hive。在Hive 2.5.15和2.6.1这两个版本中,都包含了对Hive查询语言(HQL)的支持以及对大数据处理的...
1. **hive-jdbc.jar**:这是核心的Hive JDBC驱动程序,包含了实现JDBC接口的类和方法,使得Java应用能够与Hive通信。你需要将这个JAR包添加到你的项目的类路径(classpath)中。 2. **lib/*.jar**:Hive JDBC可能...
因此,本文将总结常见的 Hive 错误及解决方案,帮助开发者快速解决问题,提高工作效率。 错误一:SecureCRT 7.3 出现乱码或者删除不掉数据 SecureCRT 是一个功能强大的 SSH 客户端工具,常用于远程登录服务器。...
8. **错误处理和日志记录**:Kettle 提供详细的日志记录和错误处理机制,帮助用户跟踪和解决在处理 Hive 数据时遇到的问题。 9. **与 SQL Server 和 Oracle 数据库的连接**:除了 Hive,这个连接包还包含了连接 SQL...
7. **HiveQL**: Hive查询语言(HQL)类似于SQL,但有一些特定于Hadoop的扩展,如LOAD DATA、CREATE TABLE AS SELECT等,用于数据导入、创建表和执行复杂查询。 8. **Hive与MapReduce的关系**: Hive的查询会被转化为...
3. **导入驱动**:在创建新的Hive数据源时,系统可能找不到默认的Hive驱动。这时,你需要提供刚刚解压的“hive-denpendencies”中的JAR文件。找到包含“org.apache.hive.jdbc.HiveDriver”的JAR文件,通常是“hive-...
4.使用Sqoop将数据从Hive导入MySQL 5.使用Sqoop将数据从MySQL导入HBase 6.使用HBase Java API把数据从本地导入到HBase中 7.使用R对MySQL中的数据进行可视化分析 内含三份报告和数据集,报告中有源码,是用spark做的
Hive JDBC(Java Database Connectivity)驱动是Hive与Java应用程序之间通信的桥梁,允许开发者通过编写Java代码或者使用支持JDBC的工具(如DBeaver)来访问和操作Hive数据。"hive-jdbc-uber-2.6.5.0-292.jar"就是...