【问题标题】:How to give hive query into sperate file for each query?如何为每个查询将配置单元查询放入单独的文件中?
【发布时间】:2018-07-30 15:58:46
【问题描述】:

我有一个 .sql 文件,其中有 100 个配置单元查询,我希望它们的输出在多个文件中,例如为第一个查询创建 abc.txt 文件,为第二个查询创建 xyz.txt 文件等等。 ...对于 100 个查询,100 个输出文件及其结果分别

【问题讨论】:

  • 文件中的各个 sql 是如何分隔的。每个sql后面有分号吗?
  • 每次查询后我都有换行符
  • 这是否意味着您的所有查询都占用一行?你能从你的查询文件中显示几行吗?
  • 从 table_name1 中选择 *;从 table_name2 中选择 *;
  • 不清楚。编辑您的问题并显示文件中的示例 5-6 行。

标签: unix hive scripting hiveql


【解决方案1】:

如果您的主 .sql 文件有分号分隔的 sql 查询,您可以使用这样的 awk 命令生成带有输出文件的单独配置单元命令。

tr '\n' ' ' < yourqueryfile | awk 'BEGIN {RS=";"} \
{gsub(/(^ +| +$)/, "", $0);printf "hive -e \"%s\" >OUT_"NF".txt\n",$0}'

RS=";" - 将记录分隔符设置为“;”

tr - 将查询之间的换行符替换为单个空格。

gsub - 修剪前导和尾随空格。

该命令将生成多个这样的 hive 命令行。

hive -e "select 1" >OUT_2.txt
hive -e "select 3 from ( select 4 )" >OUT_7.txt
hive -e "select name from t union  select n from t2" >OUT_9.txt
hive -e "select * from c" >OUT_4.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-12
    • 2021-01-18
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    相关资源
    最近更新 更多