`
HogwartsRow
  • 浏览: 59336 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

关于Java程序向Hive导入数据的问题解决方法

阅读更多

解决方法:

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();
    }
}
 

 

分享到:
评论

相关推荐

    使用javaJDBC连接hive数据,实现简单的操作!

    Java JDBC(Java Database ...通过这种方式,你可以构建更复杂的数据处理应用程序,如数据导入、ETL流程或数据分析任务。在实际项目中,为了提高性能和可维护性,可以考虑使用Spring JdbcTemplate或MyBatis等ORM框架。

    项目实战——Spark将Hive表的数据写入ElasticSearch(Java版本)

    Hive提供了丰富的接口供外部应用访问,包括Hive JDBC和Hive SerDe(Serializer/Deserializer),Java程序可以利用这些接口读取Hive表中的数据。 2. **Spark计算框架**: Spark是大数据处理的开源框架,以其高效、...

    java访问hive数据库所需全部jar包

    在Java中访问Hive,需要Hive的JDBC驱动,这个驱动是`org.apache.hive.jdbc.HiveDriver`,它实现了Java的`java.sql.Driver`接口,让Java程序能够通过JDBC URL连接到Hive服务器。 4. **HTTPClient库**:描述中提到的...

    java jdbc连接hive所需要所有jar包,请测有效。

    本压缩包文件"jdbc_hive_jar"包含了实现Java程序通过JDBC连接到Hive所需的所有jar包。这些jar包通常包含Hive JDBC驱动,它实现了与Hive服务器通信的协议,使得Java应用程序能够执行HQL(Hive SQL)查询并获取结果。 ...

    java根据excel生成 hive建表语句

    接下来,我们需要创建一个Java程序来读取Excel文件。使用POI库,你可以通过`XSSFWorkbook`对象打开Excel文件,然后通过`XSFSheet`访问工作表,再通过`XSSFRow`和`XSSFCell`获取单元格数据。以下是一个简单的示例代码...

    idea 集成使用 hive 需要导入的jar包.rar

    1. **Hive的JDBC驱动**:如`hive-jdbc-*.jar`,这是连接Hive服务器的桥梁,允许Java应用程序通过JDBC接口执行HQL语句。 2. **Hadoop相关库**:包括`hadoop-client-*.jar`、`hadoop-common-*.jar`等,这些是与Hadoop...

    Hive、MySQL、HBase数据互导

    使用Sqoop将数据从Hive导入MySQL**: - 使用Sqoop连接到Hive并指定要导出的表。 - 设置目标MySQL数据库的连接信息,包括用户名、密码、数据库名和表名。 - 执行Sqoop命令,将Hive表的数据导入到MySQL中。 **3. ...

    kettle批量插入hive2,解决表输出速度慢问题

    为了解决上述问题,可以通过以下步骤重新编译big-data-plugin插件来使表输出支持对Hive2的批量提交功能,从而显著提高数据插入的速度: 1. **下载big-data-plugin插件源码** - 首先,通过GitHub搜索下载与当前...

    利用Java多线程技术导入数据到Elasticsearch的方法步骤

    在大数据量的情况下,单线程导入数据到Elasticsearch效率会非常低,因此多线程技术成为了一个理想的解决方案。 ### 多线程导入的实践 为了提高效率,作者对现有的从MySQL到Elasticsearch导入数据的工具进行了改造...

    hive影评案例.rar

    在大数据分析领域,Hive...通过这个“hive影评案例”,学习者可以实践如何使用Java编写Hive应用程序,同时了解Hive在大数据分析中的实际应用。掌握这些技能将有助于理解大数据处理的流程,提高解决复杂数据问题的能力。

    用jest客户端将数据从hive导入elasticsearch

    这里我们关注的是如何使用Jest客户端将数据从Hive导入到Elasticsearch。Jest是一个Java REST客户端,它为Elasticsearch提供了一个简单易用的接口。以下是这个过程的详细步骤和相关知识点: 1. **Jest使用示例** ...

    hadoop中使用的hive包

    2. `hive-jdbc.jar`:允许通过JDBC驱动程序连接到Hive服务器,从而在Java应用程序或任何支持JDBC的语言中进行Hive查询。 3. `hive-metastore.jar`:提供Hive元数据服务,存储表结构、分区信息等元数据,是Hive的中央...

    apache-hive-3.1.2+mysql-connector-java-5.1.32-bin.jar

    Apache Hive是大数据处理领域的一个重要组件,它是一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供SQL(HQL)查询功能,从而简化了对大数据集的处理工作。Hive构建在Hadoop之上,充分利用了...

    hive jdbc驱动 2.5.15 及 2.6.1两个版本

    Hive JDBC驱动是连接Hadoop生态系统中的Hive数据仓库的重要桥梁,它允许用户通过Java数据库连接(JDBC)标准来访问Hive。在Hive 2.5.15和2.6.1这两个版本中,都包含了对Hive查询语言(HQL)的支持以及对大数据处理的...

    hive jdbc必用jar包

    1. **hive-jdbc.jar**:这是核心的Hive JDBC驱动程序,包含了实现JDBC接口的类和方法,使得Java应用能够与Hive通信。你需要将这个JAR包添加到你的项目的类路径(classpath)中。 2. **lib/*.jar**:Hive JDBC可能...

    Hive常见错误及解决方案.docx

    因此,本文将总结常见的 Hive 错误及解决方案,帮助开发者快速解决问题,提高工作效率。 错误一:SecureCRT 7.3 出现乱码或者删除不掉数据 SecureCRT 是一个功能强大的 SSH 客户端工具,常用于远程登录服务器。...

    kettle8.1Hive连接包

    8. **错误处理和日志记录**:Kettle 提供详细的日志记录和错误处理机制,帮助用户跟踪和解决在处理 Hive 数据时遇到的问题。 9. **与 SQL Server 和 Oracle 数据库的连接**:除了 Hive,这个连接包还包含了连接 SQL...

    hive-1.1.0-cdh5.14.2.tar.gz和mysql-connector-java-5.1.38.jar连接包

    7. **HiveQL**: Hive查询语言(HQL)类似于SQL,但有一些特定于Hadoop的扩展,如LOAD DATA、CREATE TABLE AS SELECT等,用于数据导入、创建表和执行复杂查询。 8. **Hive与MapReduce的关系**: Hive的查询会被转化为...

    hive 驱动包 hive 链接 datagrip的驱动包

    3. **导入驱动**:在创建新的Hive数据源时,系统可能找不到默认的Hive驱动。这时,你需要提供刚刚解压的“hive-denpendencies”中的JAR文件。找到包含“org.apache.hive.jdbc.HiveDriver”的JAR文件,通常是“hive-...

    使用spark对网站用户行为分析

    4.使用Sqoop将数据从Hive导入MySQL 5.使用Sqoop将数据从MySQL导入HBase 6.使用HBase Java API把数据从本地导入到HBase中 7.使用R对MySQL中的数据进行可视化分析 内含三份报告和数据集,报告中有源码,是用spark做的

Global site tag (gtag.js) - Google Analytics