运行多个配置单元查询并将输出写入文件
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 函数,并理想地输出到单独的文件?
您可能会使用其中之一,具体取决于您处理输出的方式:
- 只需使用 OK 行作为分隔符并使用脚本搜索即可。
- 使用 DESCRIBE EXTENDED 在末尾添加一行关于 table 的信息,包括其位置,可用于提取 table 名称(例如使用 sed)
如果您只是将输出文件用作手动参考,请插入一个 SQL 语句,在每个 table 之间打印您选择的分隔符,例如:
DESCRIBE table;
SELECT '-----------------' FROM table;
我正在尝试通过 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 函数,并理想地输出到单独的文件?
您可能会使用其中之一,具体取决于您处理输出的方式:
- 只需使用 OK 行作为分隔符并使用脚本搜索即可。
- 使用 DESCRIBE EXTENDED 在末尾添加一行关于 table 的信息,包括其位置,可用于提取 table 名称(例如使用 sed)
如果您只是将输出文件用作手动参考,请插入一个 SQL 语句,在每个 table 之间打印您选择的分隔符,例如:
DESCRIBE table; SELECT '-----------------' FROM table;