查询Hive处理的大量数据

Posted

技术标签:

【中文标题】查询Hive处理的大量数据【英文标题】:Querying large amount of data processed by Hive 【发布时间】:2014-10-28 14:26:01 【问题描述】:

假设我在 HDFS 中有大约 10-20GB 的数据作为 Hive 表。这是在多个 Map-Reduce 作业和 JOIN 两个单独的数据集之后获得的。我需要使这个对用户可查询。我有什么选择?

    使用Sqoop 将数据从HDFS 传输到像Postgresql 这样的RDS。但我想避免在数据传输上花费太多时间。我刚刚使用 Sqoop 在同一个 AWS 区域测试了 HDFS->RDS,800mb 的数据需要 4-8 分钟。因此,您可以想象约 60gb 的数据将非常难以管理。这将是我最后的手段。 根据用户请求直接从我的 Web 服务器查询 Hive。我从来没有像这样使用 Hive 的负责人,所以我对此表示怀疑。这让我很震惊,因为我刚刚发现您可以在 EMR 集群上进行一些端口转发后远程查询 hive 表。但是作为大(ish)数据的新手,我不太确定与此相关的风险。这样做是否司空见惯? 其他一些解决方案 - 人们通常如何做这种事情?似乎是一项很常见的任务。

为了完整起见,我的数据如下所示:

id     time             cat1    cat2    cat3    metrics[200]
A123   1234212133        12     ABC      24      4,55,231,34,556,123....(~200)
.
.
.

(时间为纪元)

我的查询看起来像这样:

select cat1, corr(metrics[2],metrics[3]),corr(metrics[2],metrics[4]),corr(metrics[2],metrics[5]),corr(metrics[2],metrics[6]) from tablename group by cat1;

需要关联函数,这就是我选择 postgresql 而不是 mysql 的原因。

【问题讨论】:

【参考方案1】:

你在Hive有关联​​函数:

corr(col1, col2)

返回组中一对数值列的 Pearson 相关系数。

【讨论】:

是的,我知道这一点,但我主要想知道这样使用 Hive 是否是好的做法......【参考方案2】:

您可以简单地通过 odbc 连接到 hiveserver 端口并执行查询。 这是一个例子: http://www.cloudera.com/content/cloudera/en/downloads/connectors/hive/odbc/hive-odbc-v2-5-10.html

【讨论】:

我意识到这是可能的,但这是一种好的做法吗?我从来没有听说过 Hive 被这样使用。 当然。我认为这是使用 Hive 的主要方式。 Hive 应该暴露给用户和机器以从远程服务器执行 ETL 和分析等等。用户通常通过 Hue 或任何支持 ODBC 和 JDBC 的查询软件(如 DBVisualizer)来访问它。此外,使用 JDBC,您可以从 Java 访问它并创建在 hive 上实现 ETL 作业的软件。以上都是很常见的。 看看这个:cwiki.apache.org/confluence/display/Hive/…。说Hive is not designed for online transaction processing and does not offer real-time queries。想法? 这意味着 hive 不支持事务(现在在 0.13 中它有点支持)并且只要您使用 map-reduce 这是正确的,您将不会获得实时查询,因为存在持续的开销。这并不意味着您不应该查询,只是它是为更具分析性和更强大的查询而构建的【参考方案3】:

Hive 用户体验 (hue) 有一个 Beeswax 查询编辑器,专门设计用于向熟悉 SQL 的最终用户展示 Hive。通过这种方式,他们可以潜在地对 Hive 中的数据运行临时查询,而无需将其移动到其他地方。您可以在此处查看 Beeswax 查询编辑器的示例:http://demo.gethue.com/beeswax/#query

这对你有用吗?

【讨论】:

【参考方案4】:

我可以从上面发布的问题中了解到,您有一些数据(20GB)存储在 hdfs 中并使用 hive。现在您想要访问该数据以执行某种统计功能,例如相关性和其他功能。

您在 hive 中有执行关联的函数。 否则,您可以使用 RHive 直接将 R 连接到 hive,甚至可以使用数据源将 excel 连接到 hive。 另一种解决方案是安装带有配置单元编辑器的hue,您可以在其中直接查询配置单元。

【讨论】:

以上是关于查询Hive处理的大量数据的主要内容,如果未能解决你的问题,请参考以下文章

Hive概述及常用命令

Hive如何处理大量小文件

打包或自动执行 Hive 查询

求问怎么设置sparksql读取hive的数据库

查询具有大量列的 Hive 表时,是不是可以减少 MetaStore 检查的数量?

Hive 查询进阶笔记