关于Hive的问题

时间:2017-02-15 10:46:15

标签: hadoop hive hdfs sqoop

我有这样的环境:

  • Haddop环境(1个主人,4个奴隶)有几个应用程序: ambari,hue,hive,sqoop,hdfs ...生产中的服务器(单独的 来自hadoop)与mysql数据库。

我的目标是:

  • 优化在此mysql服务器上进行的查询速度很慢 今天执行。

我做了什么:

  • 我使用Sqoop将mysql数据导入HDFS。

我的怀疑:

  1. 我无法使用Hive直接在HDFS中进行选择?
  2. 我是否必须将数据加载到Hive并进行查询?
  3. 如果将新数据输入mysql数据库,最好的方法是什么 获取此数据并将其插入HDFS,然后将其插入 蜂巢又来了? (也许是实时的)
  4. 提前谢谢

2 个答案:

答案 0 :(得分:3)

  

我无法使用Hive直接在HDFS中进行选择?

你可以。在hive中创建External Table,指定您的hdfs位置。然后你可以在它上面执行任何HQL。

  

我是否必须将数据加载到Hive并进行查询?

如果是外部表,您不需要在hive中加载数据;您的数据驻留在同一个HDFS目录中。

  

如果将新数据输入mysql数据库,获取此数据的最佳方法是什么。

您可以使用Sqoop Incremental Import。它将仅获取新添加/更新的数据(取决于增量模式)。您可以创建sqoop job并根据需要安排。

答案 1 :(得分:1)

您可以尝试 Impala ,这在SQL查询的情况下比Hive快得多。您需要定义表,最有可能指定一些分隔符,存储格式以及数据存储在HDFS上的位置(我不知道您存储的是哪种数据)。然后,您可以编写将从HDFS获取数据的SQL查询。

我没有从关系数据库中获取实时数据的经验,但您可以尝试使用cron调度Sqoop作业。