我检查过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
有人可以解释一下如何解决这个问题或如何解决这个问题?
答案 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。