`
乡里伢崽
  • 浏览: 108477 次
  • 性别: 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创建库创建表.docx

    掌握HQL创建数据库,掌握HQL创建内部表、外部表、分区表 使用有location 和无location创建HIVE数据库,库名与自己的名字相关;...外部表:创建表时,加上external,表示创建的为外部表。删除表时,数据不会被删除。

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

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

    HiveTestDataGenerator

    这是Hadoop MapReduce应用程序,它为Hive外部表生成测试数据,它读取Apache Hive的表创建查询,并根据其DDL生成TEXTFILE格式的行数据。 我提到了 建立MVN清洁包装 用法 将您的DDL查询放在HDFS或S3上,并指定为-q...

    大数据之运维.pptx

    大数据运维 郭现伟 大数据之运维全文共12页,当前为第1页。...Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。 解释器、编译器、优化器、执行器 解释器、编译

    云数据库方案设计(1).doc

    与大数据存储平台的数据集成 数据库提供外部表技术,可以将交易型和分析型数据库与其他存储平台对接,在数 据库内部,通过外部表访问大数据存储平台中的数据,包括: a)与HDFS对接:外部表访问引擎(读写模块),...

    云数据库方案设计.doc

    与大数据存储平台的数据集成 数据库提供外部表技术,可以将交易型和分析型数据库与其他存储平台对接,在数 据库内部,通过外部表访问大数据存储平台中的数据,包括: a)与HDFS对接:外部表访问引擎(读写模块),...

    yl-hbase-rep:hbaseplicationsnapshot实现机制,源码解析,以及复制对等体的实现-源码解析

    如果输入是CSV文件或parquet文件,当然也可以先建立一个hive外部表,再从hive import到hbase 也可以通过编码的方式,通过bulkload生成hfile然后再合并到hbase 致谢 yl-hbase-rep实现机制参考了lily

    MUG-Nantes-Demo-Hadoop:适用于HadoopMongoDB连接器演示

    MUG-Nantes-Demo-Hadoop MongoDB Hadoop演示连接器 幻灯片: : 步骤0-建立 Java cd spark/java mvn clean package assembly:single 第1步-导入数据 ... 外部表创建 hive -f hive/1-create-stock-prices.sql

    bigdata_assembly:大数据开发常用组件的封装

    大数据开发中常用组件封装zookeeper名字服务,配置管理,组员管理互斥锁,...esudf建立外部表mysqldruid 连接池canal 模拟主从复制,同步redisspring-redisjava-redis单机分布式锁 jedis.set(lockKey, requestId, SET_

    云数据库方案设计.docx

    云数据库方案设计 云数据库的云化改造 面向云化环境,数据库在多个方面需要进行改造,... 云数据集成 3.1 与RDS的数据集成 数据库使用外部表技术,可以访问RDS中的其他数据。 支持多种格式的数据; 支持访问和更新数据

Global site tag (gtag.js) - Google Analytics