运行 脚本中的脚本? - Hive(和其他 QL)

Run a script within a script? - Hive (and other QL's)

是否可以在 运行 脚本的其余部分之前调用脚本并 运行 它?

我的目标是执行一个设置脚本,该脚本将下载和组织执行我的主要查询所需的数据。

我正在寻找类似的东西:

create table logcontent (content string) row format delimited fields terminated by '\n';

**call secondary hive script with date-range arguments and download necessary logs into <logcontent>**

**perform the rest of the query**

我想这样做是为了为 table 设置创建一个很好的抽象,这样最终用户就不必担心 table 设置,它将是为他们完成。

我知道 AWS 可以选择将 Hive 脚本添加为作业中的一个步骤,但我如何在本地执行相同的操作?这可能吗?如果是这样,语法是什么?如果没有,有哪些解决方法?

您可以尝试这样的操作:

create table logcontent (content string) row format delimited fields terminated by '\n'; 
&& sh /path/to/script.sh 
&& **perform the rest of the query**

&&符号是在前一个命令成功执行后执行后续命令。

答案是在类似于下面的模板中组织您的主要 shell 脚本。

## Content of main.sh

## Code block to setup Hadoop Environment and config in Path, if not already exist.

## Step 1> Create the hive table in non-interactive mode.
hive -e "create table test(id int, name string) row format delimited fields terminated by '\n'"
# Check if the command is successful. IF else logic can be added.
echo $? 

## Step 2> Call the secondary script executable to download logs
ksh downloadlogs.sh # Assuming the download script could be invoked this way.

## Step 3> Execute rest of the hive queries to organize data
hive -e "select * from test"