hive外部表的建立与数据匹配

1.建立hive的外部表匹配hdfs上的数据

出现如下报错:

hive (solar)> select   * from solar.ori_mysql_sqoop_open_third_party_user_da limit 10;
OK
Failed with exception java.io.IOException:java.io.IOException: Not a file: hdfs://f04/sqoop/open/third_party_user/dt=2016-12-12
Time taken: 0.043 seconds

再来看一下这个表的结构:

hive (solar)> show create table solar.ori_mysql_sqoop_open_third_party_user_da;
OK
CREATE EXTERNAL TABLE `solar.ori_mysql_sqoop_open_third_party_user_da`(
  `id` string COMMENT ‘from deserializer‘,
  `md5` string COMMENT ‘from deserializer‘,
  `appid` string COMMENT ‘from deserializer‘,
  `createdtime` string COMMENT ‘from deserializer‘)
ROW FORMAT SERDE
  ‘org.apache.hadoop.hive.serde2.OpenCSVSerde‘
WITH SERDEPROPERTIES (
  ‘escapeChar‘=‘\\‘,
  ‘quoteChar‘=‘\‘‘,
  ‘separatorChar‘=‘,‘)
STORED AS INPUTFORMAT
  ‘org.apache.hadoop.mapred.TextInputFormat‘
OUTPUTFORMAT
  ‘org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat‘
LOCATION
  ‘hdfs://f04/sqoop/open/third_party_user‘
TBLPROPERTIES (
  ‘COLUMN_STATS_ACCURATE‘=‘false‘,
  ‘last_modified_by‘=‘maintain‘,
  ‘last_modified_time‘=‘1481608526‘,
  ‘numFiles‘=‘0‘,
  ‘numRows‘=‘-1‘,
  ‘rawDataSize‘=‘-1‘,
  ‘totalSize‘=‘0‘,
  ‘transient_lastDdlTime‘=‘1481608526‘)
Time taken: 0.024 seconds, Fetched: 26 row(s)

可以发现这个表没有建立分区,但是在hdfs上是有分区的:

hive (solar)> dfs -ls hdfs://f04/sqoop/open/third_party_user
            > ;
Found 4 items
-rw-r--r--   3 maintain supergroup          0 2016-12-13 05:00 hdfs://f04/sqoop/open/third_party_user/_SUCCESS
drwxr-xr-x   - maintain supergroup          0 2016-12-13 11:39 hdfs://f04/sqoop/open/third_party_user/dt=2016-12-12
-rw-r--r--   3 maintain supergroup        194 2016-12-13 05:00 hdfs://f04/sqoop/open/third_party_user/part-m-00000
-rw-r--r--   3 maintain supergroup        350 2016-12-13 05:00 hdfs://f04/sqoop/open/third_party_user/part-m-00001

解决方法是删除这个分区目录,就可以匹配数据了:

hive (solar)> dfs -ls -rmr hdfs://f04/sqoop/open/third_party_user/dt=2016-12-12
hive (solar)> select   * from solar.ori_mysql_sqoop_open_third_party_user_da limit 10;
OK
2	5086043868858874977	1	1481011995823
4	-724068265655153681	1	1481011997002

2.hive建立有分区的外部表时,发现没有数据

有可能是因为没有加partition,加partiiton后,再查一下数

时间: 2024-08-09 14:43:20

hive外部表的建立与数据匹配的相关文章

HIVE外部表 分区表

HIVE外部表 分区表    外部表        创建hive表,经过检查发现TBLS表中,hive表的类型为MANAGED_TABLE. 在真实开发中,很可能在hdfs中已经有了数据,希望通过hive直接使用这些数据作为表内容.        此时可以直接创建出hdfs文件夹,其中放置数据,再在hive中创建表管来管理,这种方式创建出来的表叫做外部表. #创建目录,上传已有文件        hadoop fs -mkdir /data        hadoop fs -put stude

0015-如何使用Sentry管理Hive外部表权限

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看. 1.文档编写目的 本文档主要讲述如何使用Sentry对Hive外部表权限管理,并基于以下假设: 1.操作系统版本:RedHat6.5 2.CM版本:CM 5.11.1 3.集群已启用Kerberos和Sentry 4.采用具有sudo权限的ec2-user用户进行操作 2.前置准备 2.1创建外部表数据父目录 1.使用hive用户登录Kerberos [[email protected] 1874-hive-HIVESERVER2]

0035-如何使用Sentry管理Hive外部表(补充)

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看. 1.文档编写目的 本文文档主要讲述如何使用Sentry管理Hive/Impala外部表权限. 内容概述 1.创建测试库及外部表 2.创建角色并授权 3.授权测试 4.测试总结 测试环境 1.操作系统为CentOS6.5 2.CM和CDH版本为5.12.1 3.采用root用户操作 前置条件 1.集群运行正常 2.集群已启用Kerberos且正常使用 3.HDFS/Hive/Impala/Hue服务已与Sentry集成 4.Hive用

Hive 外部表 分区表

  之前主要研究oracle与mysql,认为hive事实上就是一种数据仓库的框架,也没有太多另类,所以主要精力都在研究hadoop.hbase,sqoop,mahout,近期略微用心看了下hive.事实上hive还是比我想象中好用的多,心里有点点暗爽,不论是与hadoop的衔接,还是在对外查询分析,定期hsql生成报表方面,都很方便.能够不用mapreduce.直接用hive生成报表. 真是方便.  Hive 提供两者表的两种使用方式,一种是内部表(托管表),第二种就是外部表. 对于两种表的使

hive外部表

创建外部表.数据从HDFS获取  只是建立了链接,hdfs中的数据丢失,表中数据也丢失;hdfs数据增加,表中数据也增加 上传文件 创建外部表 删除文件 执行查询语句,发现少了 原文地址:https://www.cnblogs.com/ggzhangxiaochao/p/9220855.html

如何利用Oracle外部表导入文本文件的数据

同事最近在忙数据一致性比对工作,需要对不同文本文件中的数据进行比对,有的文件较大,记录较多,如果用普通的文本编辑器打开的话,很显然,会很卡,甚至打不开. 基于此,可将该文本文件的数据导入到数据库中,在集合的层面进行比对. 那么如何将文本文件的数据导入到数据库中呢?在这里,主要利用了Oracle的外部表特性. Oracle外部表支持两种类型的驱动:一种是ORACLE_LOADER,外部表的数据必须来源于文件文件,另一种则是ORACLE_DATAPUMP,外部表的数据必须是二进制dump文件,该du

hive表与外部表的区别

相信很多用户都用过关系型数据库,我们可以在关系型数据库里面创建表(create table),这里要讨论的表和关系型数据库中的表在概念上很类似.我们可以用下面的语句在Hive里面创建一个表: hive> create table wyp(id int, > name string, > age int, > tele string) > ROW FORMAT DELIMITED > FIELDS TERMINATED BY '\t' > STORED AS TEX

hive内部表与外部表区别

1.创建内部表与外部表的区别是什么? 2.external关键字的作用是什么? 3.外部表与内部表的区别是什么? 4.删除表的时候,内部表与外部表有什么区别? 5.load data local inpath '/home/wyp/data/wyp.txt' into table wyp;的过程是什么样子的? 6.磁盘,hdfs,hive表他们之间的过程是什么样子的? 相信很多用户都用过关系型数据库,我们可以在关系型数据库里面创建表(create table),这里要讨论的表和关系型数据库中的表

Hive创建外部表以及分区

创建带分区的外部表 创建外部表的优点是数据能够随时从hdfs中挂载进表中 使用分区的优点是能够缩短查询范围 以下的样例展示了怎样创建外部表 CREATE EXTERNAL TABLE my_daily_report( last_update string, col_a string, col_b string, col_c string, col_d string, col_e string, col_f string, col_g string, col_h string, col_i str