Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hive 如何以编程方式在配置单元中查找外部表的所有文件位置?_Hive_Hiveql - Fatal编程技术网

Hive 如何以编程方式在配置单元中查找外部表的所有文件位置?

Hive 如何以编程方式在配置单元中查找外部表的所有文件位置?,hive,hiveql,Hive,Hiveql,我在配置单元中有一些外部表,希望编写一个脚本来调整其中的数据。由于Hive是它读取的文件的真实来源,所以我想从中获取分区的位置 是否有一种方便的语法来获取外部表的所有分区的位置列表?descripe命令将执行以下操作: DESCRIBE FORMATTED Db_name.table_name 如果您有权访问hive metastore,则可以通过脚本/程序下的查询获取详细信息: 例如,对配置单元元存储的查询: SELECT d.NAME, a.tbl_name, b.location, c.

我在配置单元中有一些外部表,希望编写一个脚本来调整其中的数据。由于Hive是它读取的文件的真实来源,所以我想从中获取分区的位置


是否有一种方便的语法来获取外部表的所有分区的位置列表?

descripe命令将执行以下操作:

DESCRIBE FORMATTED Db_name.table_name

如果您有权访问
hive metastore
,则可以通过脚本/程序下的查询获取详细信息:

例如,对配置单元元存储的查询:

SELECT d.NAME, a.tbl_name, b.location, c.PART_NAME 
FROM dbs d 
inner join tbls a ON d.DB_ID = a.db_id 
inner JOIN sds b ON a.SD_ID = b.sd_id 
LEFT outer JOIN partitions c ON a.TBL_ID = c.tbl_id 
WHERE a.tbl_name = 'your_table_name' AND d.name = 'your_db_name'

仅显示表的配置默认位置。因为我有外部分区,所以我的表在其他目录中有文件(以及默认位置中不属于表的文件)。如果文件/分区发生更改,您可以同步表的元数据:MSCK REPAIR table\u name sync partitions;