Hive Insert可以从Hive CLI正常工作但从终端失败

时间:2015-03-17 10:11:29

标签: hadoop hive hiveql

我目前有以下情况:

我有一个shellcript,它创建了两个表,然后用另一个表填充其中一个表。

我的脚本看起来有点像这样:

    hive -e "CREATE EXTERNAL TABLE table1 ... ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION '/user/input/'"
    hive -e "CREATE EXTERNAL TABLE table2 ... PARTITIONED BY ..."
    hive -e "WITH data AS (SELECT date, ...) FROM data INSERT OVERWRITE TABLE table2 PARTITION(part_date) SELECT ... date"

然后是一些从table2中选择某些数据的shellcript。我使用shellscript,因为在table2上进行选择之前必须应用一些逻辑。

脚本运行时没有错误,表格已创建,table1中包含数据,但table2结束为空。出于某种原因,当我使用非常小的测试数据集时它会起作用,但是一旦数据集变大(> 1GB)table2为空。

如果我从Hives CLI手动运行相同的命令,一切正常,table2包含预期的数据。

为什么会发生这种情况,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您的shell脚本命令必须按顺序执行才能获取table2中的数据。

在shell脚本中尝试此操作:

hive -e "your first query" && 
hive -e "your second query" &&
hive -e "your third query"

这应该一个接一个地执行您的配置单元查询。 (第二次查询等待第一次完成,第三次查询等待第一次和第二次完成)