Hive Insert 在 Hive CLI 中工作正常,但在终端中失败
Hive Insert works fine from Hive CLI but fails from terminal
我目前的情况是:
我有一个 shellscript,它创建了两个表,然后用另一个表的数据填充其中一个。
我的脚本看起来有点像这样:
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 中选择特定数据的 shellscript。我使用 shellscript 是因为在我可以在 table2
.
上进行选择之前必须应用一些逻辑
脚本 运行 没有错误,表已创建,table1
中有数据,但 table2
最终为空。出于某种原因,当我使用非常小的测试数据集时它可以工作,但是一旦数据集变大(> 1GB)table2
为空。
如果我 运行 从 Hives CLI 手动执行完全相同的命令,一切正常,并且 table2
中有预期的数据。
为什么会发生这种情况,我该如何解决?
您的 shell 脚本命令必须顺序执行 才能在 table2
.
中获取数据
在您的 shell 脚本中试试这个:
hive -e "your first query" &&
hive -e "your second query" &&
hive -e "your third query"
这应该一个接一个地执行您的配置单元查询。 (第二个查询等待第一个完成,第三个查询等待第一个和第二个完成)
我目前的情况是:
我有一个 shellscript,它创建了两个表,然后用另一个表的数据填充其中一个。
我的脚本看起来有点像这样:
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 中选择特定数据的 shellscript。我使用 shellscript 是因为在我可以在 table2
.
脚本 运行 没有错误,表已创建,table1
中有数据,但 table2
最终为空。出于某种原因,当我使用非常小的测试数据集时它可以工作,但是一旦数据集变大(> 1GB)table2
为空。
如果我 运行 从 Hives CLI 手动执行完全相同的命令,一切正常,并且 table2
中有预期的数据。
为什么会发生这种情况,我该如何解决?
您的 shell 脚本命令必须顺序执行 才能在 table2
.
在您的 shell 脚本中试试这个:
hive -e "your first query" &&
hive -e "your second query" &&
hive -e "your third query"
这应该一个接一个地执行您的配置单元查询。 (第二个查询等待第一个完成,第三个查询等待第一个和第二个完成)