使用.sh文件中的-e选项运行hiveql的奇怪问题

时间:2014-05-22 13:20:04

标签: shell hadoop hive hiveql

我检查过Stackoverflow但找不到任何帮助,这就是我发布新问题的原因。

问题与使用.sh文件中的-e选项执行hiveql有关。

如果我以$ bin/hive运行配置单元,一切正常并正确显示所有数据库和表。

如果我将hive作为$ ./hive$ hive运行(在路径变量中设置)或$HIVE_HOME/bin/hive,则只显示默认数据库,而且没有任何表信息。

我正在学习配置单元并尝试使用$HIVE_HOME/bin/hive -e文件中的.sh执行hive命令,但它始终会找不到数据库。

所以我理解这是与阅读元数据有关的东西,但我无法理解为什么会出现这种行为。

然而,hadoop命令可以在任何地方正常工作。

下面是我试图从.sh文件

执行的一个命令
$HIVE_HOME/bin/hive -e 'LOAD DATA INPATH hdfs://myhost:8040/user/hduser/sample_table INTO TABLE rajen.sample_table'

信息:

我使用的是hive-0.13.0,hadoop-1.2.1

有人可以解释一下如何解决这个问题或如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

首先可以更正查询,hive期望加载语句路径后面应该跟引号。 首先从shell- HIVE_HOME / bin / hive -e" LOAD DATA INPATH' / user / hduser / sample_table' INTO TABLE rajen.sample_table"

或将您的命令放在test.hql文件中并测试$ hive -f test.hql


- test.hql

LOAD DATA INPATH' / user / hduser / sample_table' INTO TABLE rajen.sample_table


答案 1 :(得分:0)

我终于能够解决这个问题了。

问题是我保留了hive metadatastore_db的默认derby设置,因此从我曾经用于触发hive -e命令的位置开始,它用于创建metadata_db副本的新副本。

所以我在mysql中创建了元数据存储,它变成了全局的,所以现在从触发hive -e命令的地方开始,使用了相同的元数据存储db。