`
乡里伢崽
  • 浏览: 112032 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

hive外部表建立时出现的问题

    博客分类:
  • hive
 
阅读更多
1:刚刚研究hive,遇到一个很迷糊的问题,我想load hadoop下的a.txt文件,将这些数据导入到/user/hive/warehouse/下的testHiveDriverTable表中,只想导入数据,不想移动该文件。
2但是每次运行后,该文件都会自动的移动到/user/hive/warehouse/下。我看教程说,建立外部表的话,就不会移动hdfs上的文件位置,但是这些我都尝试了,还是没有解决问题。请各位看看如何处理
3:代码如下:

建表语句:ResultSet res = stmt.executeQuery("create external  table " + tableName + " (keystring, value string)");
Load语句:sql = "loaddata inpath '"+ROOT_PATH+"/home2/hadoop/a.txt' into table " +tableName; 

运行结果:

Running: show tables'testHiveDriverTable'
testhivedrivertable
Running: describetestHiveDriverTable
key                   string             
value                 string             
Running: load data inpath'hdfs:////home2/hadoop/a.txt' into table testHiveDriverTable
Running: select * from testHiveDriverTable
1 a null
2 b null
3 c null
Running: select count(1) fromtestHiveDriverTable

运行前:
http://dl2.iteye.com/upload/attachment/0086/0198/4e698ec4-b3c1-3221-87d5-dcc948b4cf50.png

运行后:
http://dl2.iteye.com/upload/attachment/0086/0200/705dd992-a158-30dd-aea3-b59355877945.png


问题已经解决了。是我自己的建立表语句有问题,理解的不争取啊!

1:我本来是这么认为的,create 一个外关联表后,只是一个单纯的建表语句,需要load后才会将hadoop中的数据导入(仅仅是关联性的导入,非移动或复制),load后的原文件夹下的数据是不会变化的。但是尝试了很多次都会移动文件,困扰我的正是这个原因,是我理解错误了。

2:其实load数据,人家hive说的很明确,就是复制或者移动数据用的。文件肯定是要移位的。

3:正确的做法是

CREATE EXTERNAL TABLE testHiveDriverTable(hostname string,logdate string, type string,class string,demo array<string>) row format delimited fields terminated by '|' COLLECTION items terminated BY '@' stored as textfile location 'hdfs://IP:port/home2/hadoop/'
其中'hdfs://IP:port/home2/hadoop/'是关键,这个才是指定hadoop文件的位置。

4:建好表以后,如果不想移动数据,根本不需要load ,直接select语句就可以查询了。 
分享到:
评论

相关推荐

    建立Hive和Hbase的映射关系,通过Spark将Hive表中数据导入ClickHouse

    在Hive中,可以创建一个外部表,其表的存储位置指向HBase的表。这样,Hive查询可以通过HBase的表获取数据,反之亦然。映射的关键在于定义正确的SerDe(序列化/反序列化)类和配置参数,以确保Hive能理解HBase的行键...

    Hive练习 1.在Hive中建立数据库hive,该库中建立外部表party,将hdfs的/party.csv导入该表,用命令

    2. **创建外部表**:在数据库`hive`中创建一个名为`party`的外部表,并指定其字段类型。 - `year`字段为整型(`int`)。 - `type`字段为字符串类型(`string`)。 - `program`字段为字符串类型(`string`)。 - ...

    kettle8.1Hive连接包

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

    hive面试题(Hadoop)

    - **错误定位与修复**:当数据出现问题时,可以快速定位到问题所在的层级,并针对性地解决问题。 - **灵活性**:各层级之间的解耦提高了整个系统的灵活性和可扩展性。 ### Hive处理JSON数据的方法 #### 方法一:...

    ES-HIVE数据互通

    2. **创建表**:创建一个外部表,使用Elasticsearch Storage Handler来存储数据。 ```sql CREATE EXTERNAL TABLE alsobuy ( key_sku string, also_sku string, count bigint ) STORED BY 'org.elastic...

    Hive权威指南

    Hive是建立在Hadoop生态系统上的一个数据仓库工具,它允许通过SQL-like语言(HQL)对大规模分布式数据集进行查询和管理。这本书为读者提供了全面的Hive学习资源,帮助他们掌握在大数据环境中利用Hive进行高效的数据...

    HIVE从入门到精通.pdf

    Hive支持表、外部表、分区和桶等数据模型。 #### 二、Hive的安装与配置 - **安装流程**:首先需要确保已经正确安装了Hadoop环境,然后下载Hive并解压至适当位置,接着配置Hive的环境变量以及相关配置文件。 - **...

    Hive资料整合

    9. **Hive外部表**:外部表不控制数据的生命周期,只存储表的定义,数据的删除由用户独立管理。 10. **Hive与Spark集成**:Hive可以与Apache Spark集成,利用Spark的内存计算能力提高查询速度。 通过阅读`hive2....

    Hive用户指南(Hive_user_guide)_中文版.pdf

    表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。 3、 解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及 查询计划的生成。生成的查询计划存储在 HDFS 中,...

    Hadoop和HIVE面试题

    4. 索引:虽然Hive不支持传统意义上的数据库索引,但可以通过创建外部表和视图来实现类似的功能,提高查询速度。 在面试中,可能会遇到的问题涵盖以下几个方面: 1. Hadoop的两个主要组成部分是什么?它们各自的...

    hive的学习资料

    从外部文件系统加载数据到 Hive 表。 2.6 Insert 包括插入数据、写入文件系统、插入顺序和初始值设定。 2.7 Cli Hive 命令行选项、交互式 Shell 命令及资源调用。 **3. Hive 其他操作** 包括 Limit、Top k、...

    Hive语法详解

    Hive是一个建立在Hadoop之上的数据仓库工具,主要用于对存储在Hadoop文件系统(HDFS)中的数据进行数据分析和处理。它提供了类似SQL的查询语言——Hive SQL,使得用户能够方便地对Hadoop中的大规模数据进行提取、...

    hive与hbase整合经验谈.pdf

    整合Hive与HBase的过程是通过Hive提供的外部表存储处理程序HiveStorageHandlers(通常依赖于hive-hbase-handler.jar工具包)来实现的,使得Hive能够直接操作HBase中的表。整合后的系统中,Hive能够执行数据的批量...

    一张图看懂Hive

    - **表**: 存储数据的基本单元,可以是内部表也可以是外部表。 - **视图**: 基于一个或多个表的虚拟表,用于简化查询或实现某些特定功能。 ### 使用Hive的过程 使用Hive进行数据处理的一般流程如下: 1. **创建表...

    Hive用户指南(Hive_user_guide)_中文版

    - **元数据存储**:通常采用关系型数据库(如MySQL或Derby)来存储Hive的元数据信息,这些信息包括表的定义、列属性、表的属性(例如是否为外部表)、表数据所在的目录等。 - **解释器、编译器、优化器和执行器**:...

    DBaver连接hive所需jar包(解压即可)

    在DBaver中配置Hive连接时,需要以下关键组件的JAR文件: 1. **Hive JDBC驱动**:这是连接到Hive服务器的关键,它实现了Java Database Connectivity (JDBC) 接口,使得像DBaver这样的Java应用能够与Hive通信。在这...

    Hive用户指南

    Hive还支持创建外部表、创建临时表、指定存储格式等高级用法,以满足不同的业务需求。 总结,Hive作为大数据处理的重要工具,通过与Hadoop的紧密结合,提供了便捷的数据仓库功能。理解Hive的结构和基本操作,是有效...

    远程连接hive

    启动Hive客户端是为了与Hive服务端建立连接,从而能够执行HQL查询。 1. **配置Hive客户端**:确保客户端能够找到Hive的服务端地址。这通常涉及到对`hive-site.xml`文件的配置,特别是`hive.server2.thrift.bind....

    Hive介绍(百度)

    Hive是一个建立在Hadoop生态系统之上的数据仓库工具,它将结构化的数据文件映射为一张数据库表,并提供SQL查询功能。Hive通过将SQL语句转换为MapReduce任务来处理HDFS上的数据,使得非程序员也能方便地对大数据进行...

    Hive学习资料

    - **外部表**:与内部表不同,外部表的数据存储位置可以在HDFS上的任何位置,这使得外部表在数据加载时更为灵活。 - **分区**:为了提高查询性能,可以基于某个列值将表划分为多个分区。每个分区包含表的一部分...

Global site tag (gtag.js) - Google Analytics