【问题标题】:Questions about Hive关于蜂巢的问题
【发布时间】:2017-02-15 10:46:15
【问题描述】:

我有这个环境:

  • 具有多个应用程序的 Hadoop 环境(1 个主设备,4 个从设备): ambari、hue、hive、sqoop、hdfs ...生产中的服务器(单独 来自 hadoop) 和 mysql 数据库。

我的目标是:

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

我做了什么:

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

我的疑惑:

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

提前谢谢你

【问题讨论】:

    标签: hadoop hive hdfs sqoop


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 你也可以尝试使用--hive-import来sqoop数据而不是#1和#2。您的数据将立即可用于 Hive 和 Impala。有关 OP 的更多信息,有关一步引入数据并能够使用更快的 Impala here 查询数据。答案以通常更快的拼花格式引入数据。
    • 感谢您的关注!
    • @sola.carol 乐于助人!
    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的关注!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多