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

Running a number of hive queries and writing output to file

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

hive -f nameOfSqlQueryFile.sql > out.txt

但是,如果我打开输出文件,它会背靠背抛出所有描述,并且不清楚 table 的一个描述从哪里开始,到哪里结束。

因此,我尝试制作一个批处理文件,该文件使用 -e 分别描述每个 table 并输出到文件:

#!/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. 只需使用 OK 行作为分隔符并使用脚本搜索即可。
  2. 使用 DESCRIBE EXTENDED 在末尾添加一行关于 table 的信息,包括其位置,可用于提取 table 名称(例如使用 sed)
  3. 如果您只是将输出文件用作手动参考,请插入一个 SQL 语句,在每个 table 之间打印您选择的分隔符,例如:

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