bash - 保持 Hive 会话打开 EMR
问题描述
我在 AWS EMR 上运行一个 bash 脚本,它执行以下操作:
for i in (‘tab1’ ‘tab2’ ‘tab3’ ‘tab4’)
do
nrow=$(hive -e “select count(*) from $i”)
done
这需要时间,因为每次计数都必须设置一个新的配置单元会话。有没有办法让会话在整个循环中保持打开状态?
解决方案
在一个语句中完成所有计数。您还可以生成 SQL 语句而不是硬编码。
像这样的东西:
output=$(hive -S -e "select 'tab1', count(*) from tab1
union all
select 'tab2', count(*) from tab2
union all
select 'tab3', count(*) from tab3")
echo "$output" | while read TABLE_NAME COUNT
do
echo "$TABLE_NAME $COUNT"
done
推荐阅读
- kubernetes-helm - 我们可以在分蘖而不是掌舵客户端中进行图表安装吗?
- amazon-web-services - 如何知道我的实例是否会在 ec2 中终止?
- android - 如何修复 android studio 3 中的“找不到符号类 Nullable”错误
- stripe-payments - Stripe:有没有一种元素可以免费创造客户?
- javascript - 在 Spark AR studio 中获取像素屏幕尺寸(适用于 Facebook)
- xml - 如何从 xml 文件构建 xsd?
- azure-application-insights - 启动 Application Insights Agent for Java 时出错
- python - 适用于 Apache Flink 的 Python API 上的 Kafka 连接器
- typescript - 在 JS 中测试异步函数 - 错误:“您是否忘记使用 await”
- sql - 如何在 SQL Server 中计算给定每日帐户余额的 MTD?