运行许多配置单元查询并将输出写入文件

时间:2015-01-08 22:14:36

标签: bash hive

我正在尝试通过Hive使用DESCRIBE函数将每个表的列描述输出到单个文件。我发现了-f选项,所以我只能从文件中读取并将输出写回:

hive -f nameOfSqlQueryFile.sql > out.txt

但是,如果我打开输出文件,它会重新抛出所有描述,并且不清楚一个表的开始位置和结束位置。

所以,我尝试制作一个批处理文件,使用-e分别描述每个表并输出到文件中:

#!/bin/bash

nameArr=( $(hive -e 'show tables;') )
count=0
for i in "${nameArr[@]}"
do
    echo 'Working on table('$count'): '$i
    hive -e 'describe '$i > $i'_.txt';
    count=$(($count+1))
done

但是,因为这需要为每个查询重新连接,所以它非常慢,需要花费数小时才能处理数百个查询。

有没有人知道我怎么可能运行这些DESCRIBE函数,并理想地输出到单独的文件?

1 个答案:

答案 0 :(得分:1)

您可以使用其中一种,具体取决于您处理输出的方式:

  1. 只需使用OK行作为分隔符,然后使用脚本搜索它。
  2. 使用DESCRIBE EXTENDED,最后在表格上添加一行信息,包括其位置,可用于提取表名(例如,使用sed)
  3. 如果您只是将输出文件用作手动参考,请插入一个SQL语句,在每个表之间打印您选择的分隔符,例如:

    DESCRIBE table;
    SELECT '-----------------' FROM table;