在 hive 脚本中执行 unix 命令
Posted
技术标签:
【中文标题】在 hive 脚本中执行 unix 命令【英文标题】:execute unix commands inside hive script 【发布时间】:2016-10-12 09:14:50 【问题描述】:我正在编写 hive 脚本,我需要在 hive 脚本中读取 hdfs 中的文件并在 hive 查询中使用文件内容。 hdfs 中的文件包含单行日期。
我知道我们可以通过使用 '!
' 在 hive shell 中使用 unix 命令,但我需要使用以下命令,但它无法使用!
while IFS= read -r line; do snapshot_id=$line done < <(hadoop fs -cat /hdfs_path/date.txt)
select * from <tablename> where datestring = $snapshot_id
有没有可能。 ?
【问题讨论】:
【参考方案1】:这和你需要的差不多,
#!/bin/bash
old_IFS=$IFS
IFS=$'\n'
for line in $(hadoop fs -cat /hdfs_path/date.txt)
do
hive -f "select * from test where datestring = $line"
done
IFS=$old_IFS
希望对你有帮助
【讨论】:
我不想要 shell 脚本。我需要从 oozie 执行的 hql 脚本 为什么你不能在 oozie 中作为 shell 动作而不是 hive 动作运行 为什么不两者兼而有之?您应该能够将 shell 动作中的参数传递给 hive 动作以上是关于在 hive 脚本中执行 unix 命令的主要内容,如果未能解决你的问题,请参考以下文章