2014-10-28 154 views
0

假设我有大约10-20GB的HDFS数据作为Hive表。这是在几个Map-Reduce作业之后获得的,并通过两个单独的数据集进行联接。我需要让这个Queryable给用户。我有什么选择?查询Hive处理的大量数据

  1. 使用Sqoop将数据从HDFS传输到像Postgresql这样的RDS。但我想避免在数据传输上花费太多时间。我只是使用Sqoop在同一AWS区域测试HDFS-> RDS,而800mb的数据需要4-8分钟。所以你可以想象〜60GB的数据会非常难以管理。这将是我最后的手段。
  2. 根据用户请求直接从Web服务器查询Hive。我从来没有像这样使用Hive的头,所以我对此持怀疑态度。这让我感到震惊,因为我发现你可以在EMR集群上进行一些端口转发之后远程查询配置单元表。但是对于大数据我是不太清楚与此相关的风险。这样做常见吗?
  3. 其他一些解决方案 - 人们通常如何做这种事情?看起来像一个很常见的任务。

只是为了完整性的缘故,我的数据是这样的:

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;

需要的相关函数,这就是为什么我选择了cho在MySQL上使用postgresql。

回答

0

你在Hive相关函数:

更正件(COL1,COL2)

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

+0

是的我意识到这一点,但我主要想知道是否使用像这样的Hive是好的做法或不... – user1265125 2014-10-28 19:30:36

0

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

+0

我意识到这是可能的,但它是好的做法?我从来没有听说过像这样使用Hive。 – user1265125 2014-10-28 19:29:52

+0

当然。我认为这是Hive使用的主要方式。 Hive应该暴露给用户和机器,以便从远程服务器执行ETL和分析等等。用户通常通过Hue或任何支持ODBC和JDBC的查询软件(如DBVisualizer)来访问它。此外,使用JDBC可以从Java访问它并创建在配置单元上实现ETL作业的软件。以上所有都很常见。 – dimamah 2014-10-29 06:40:13

+0

看看这个:https://cwiki.apache.org/confluence/display/Hive/Tutorial#Tutorial-WhatHiveIsNOT。 Hive并非专为在线交易处理而设计,并且不提供实时查询。思考? – user1265125 2014-10-29 08:19:13

0

蜂房用户体验(色调)具有专门用于暴露蜂房结束谁是舒服SQL用户的目的设计的蜂蜡查询编辑器。通过这种方式,他们可以针对驻留在Hive中的数据运行即席查询,而无需将其移至别处。你可以在这里看到一个蜂蜡查询编辑器的例子:http://demo.gethue.com/beeswax/#query

这会适合你吗?

0

我可以从上面发布的问题了解到,你有一些数据(20GB),你已经存储在hdfs中并使用配置单元。现在你想访问这些数据来执行一些统计功能,比如相关性和其他功能。

  • 您在配置单元中执行相关性的函数。
  • 否则,您可以直接使用RHive将R连接到配置单元,甚至可以使用数据源配置为使用数据源。
  • 另一种解决方案是安装hue,它可以与配置单元编辑器一起提供,您可以直接查询配置单元。