现在的位置: 首页 > 综合 > 正文

hadoop外表数据文件路径查询

2012年10月11日 ⁄ 综合 ⁄ 共 2394字 ⁄ 字号 评论关闭

在hive中,外表是个很重要的组成部分,通过外表可以很方便进行数据的共享。
因为普通的表会将数据文件拷贝自己的目录下,这样想要分享数据只能保存多份数据。
但是外表很好的解决了这个问题。

CREATE EXTERNAL TABLE sunwg_test09(id INT, name string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
LOCATION ‘/sunwg/test08′;

实际上外表不光可以指定hdfs的目录,本地的目录也是可以的。
比如:
CREATE EXTERNAL TABLE test10(id INT, name string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
LOCATION ‘file:////home/hjl/sunwg/’;


外表的hive.metatstore.warehouse.dir中是没有目录的,如果我们建立了外表,如何才能查找到数据文件呢?所有的表结构,我们再hive配置之处,都选择了存储方式,最常用的就是保存在mysql中。

hive-site.xml中的配置片段如下:

<property>
  <name>hive.metastore.local</name>
  <value>true</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://centos1:3306/hive?createDatabaseIfNotExist=true</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hadoop</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>hadoop</value>
</property>

这一段,就是我们保存的hive的metadata的存储地址以及用户名和密码等,我们可以利用mysql客户端进行登录。

mysql> select * from TBLS where TBL_NAME=’sunwg_test09′;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect…
Connection id:    16
Current database: hjl

+——–+————-+——-+——————+——-+———–+——-+—————-+—————-+——————–+——————–+
| TBL_ID | CREATE_TIME | DB_ID | LAST_ACCESS_TIME | OWNER | RETENTION | SD_ID | TBL_NAME       | TBL_TYPE       | VIEW_EXPANDED_TEXT | VIEW_ORIGINAL_TEXT |
+——–+————-+——-+——————+——-+———–+——-+—————-+—————-+——————–+——————–+
|     15 |  1299519817 |     1 |                0 | hjl   |         0 |    15 | sunwg_test09   | EXTERNAL_TABLE | NULL               | NULL               |
+——–+————-+——-+——————+——-+———–+——-+—————-+—————-+——————–+——————–+
1 row in set (0.01 sec)

可以看到该表的类型为EXTERNAL_TABLE。

mysql> select * from SDS where SD_ID=15;
+——-+——————————————+—————+———————————+————-+————————————————————+———-+
| SD_ID | INPUT_FORMAT                             | IS_COMPRESSED | LOCATION                        | NUM_BUCKETS | OUTPUT_FORMAT                                              | SERDE_ID |
+——-+——————————————+—————+———————————+————-+————————————————————+———-+
|    15 | org.apache.hadoop.mapred.TextInputFormat |               | hdfs://hadoop00:9000/hjl/test08 |          -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat |       15 |
+——-+——————————————+—————+———————————+————-+————————————————————+———-+
1 row in set (0.00 sec)

在表SDS中记录了表sunwg_test09的数据文件路径为hdfs://hadoop00:9000/hjl/test08。

抱歉!评论已关闭.