标签: impala

与hive相比,impala如何提供更快的查询响应

我最近开始研究使用Hive和Impala查询位于HDFS上的大量CSV数据.正如我所期望的那样,与Hive相比,我对Impala的响应时间要好得多.

我想知道是否有一些类型的查询/用例仍然需要Hive以及Impala不适合的地方.

对于HDFS上的相同数据,Impala与Hive相比如何提供更快的查询响应?

hadoop hive impala

54
推荐指数
3
解决办法
3万
查看次数

快速Hadoop分析(Cloudera Impala vs Spark/Shark vs Apache Drill)

我想对HDFS中的数据进行一些"近实时"数据分析(类似OLAP).
我的研究表明,与Apache Hive相比,上述三个框架报告了显着的性能提升.有没有人对其中任何一个有一些实际经验?不仅涉及性能,还涉及稳定性?

bigdata impala apache-spark apache-drill

41
推荐指数
1
解决办法
3万
查看次数

Impala无法访问所有配置单元表

我尝试通过hive查询hbase数据(我正在使用cloudera).我做了一个指向hbase的fiew hive外部表,但事情是Cloudera的Impala无法访问所有这些表.所有hive外部表都出现在Metastore管理器中,但是当我在Impala中执行一个简单的"show tables"时,我看到缺少3个表.这会是特权问题吗?我看到在Metastore管理器中,每个人都可以读取丢失的3个表,所以......

hadoop hive cloudera hue impala

20
推荐指数
1
解决办法
2万
查看次数

如何将所有配置单元表从一个数据库复制到其他数据库

我在hive表中有默认的db,它包含80个表.
我创建了另外一个数据库,我想将所有表从默认数据库复制到新数据库.

有没有办法我可以从一个数据库复制到其他数据库,而无需创建单个表.

如果有任何解决方案,请告诉我..提前致谢

hive hiveql impala

20
推荐指数
2
解决办法
5万
查看次数

如何有效地将数据从Kafka移动到Impala表?

以下是当前流程的步骤:

  1. Flafka将日志写入HDFS上的"着陆区".
  2. 由Oozie安排的工作将完整文件从着陆区复制到临时区域.
  3. 临时数据由Hive表"架构化",该表使用暂存区域作为其位置.
  4. 来自登台表的记录被添加到永久Hive表(例如insert into permanent_table select * from staging_table).
  5. 来自Hive表的数据在Impala中通过refresh permanent_table在Impala中执行而可用.

现有数据流

我看看我构建的过程并且"闻起来"很糟糕:有太多的中间步骤会影响数据流.

大约20个月前,我看到了一个演示,其中数据从Amazon Kinesis管道流式传输,并且可以近乎实时地被Impala查询.我不认为他们做了一件非常丑陋/错综复杂的事情.有没有更有效的方法将数据从Kafka传输到Impala(可能是可以序列化为Parquet的Kafka消费者)?

我认为"将数据流式传输到低延迟SQL"必定是一个相当常见的用例,所以我很想知道其他人是如何解决这个问题的.

hadoop flume apache-kafka impala

13
推荐指数
1
解决办法
1602
查看次数

大数据信号分析:更好的存储和查询信号数据的方法

我正在使用Hadoop/Spark进行一些信号分析,我需要有关如何构建整个过程的帮助.

信号现在存储在数据库中,我们将使用Sqoop读取,并将在HDFS上的文件中进行转换,其架构类似于:

<Measure ID> <Source ID> <Measure timestamp> <Signal values>
Run Code Online (Sandbox Code Playgroud)

其中信号值只是由浮点逗号分隔的数字组成的字符串.

000123  S001  2015/04/22T10:00:00.000Z  0.0,1.0,200.0,30.0 ... 100.0
000124  S001  2015/04/22T10:05:23.245Z  0.0,4.0,250.0,35.0 ... 10.0
...
000126  S003  2015/04/22T16:00:00.034Z  0.0,0.0,200.0,00.0 ... 600.0
Run Code Online (Sandbox Code Playgroud)

我们想写交互/批量查询到:

在信号值上应用聚合函数

SELECT *
FROM SIGNALS
WHERE MAX(VALUES) > 1000.0
Run Code Online (Sandbox Code Playgroud)

选择峰值超过1000.0的信号.

将聚合应用于聚合

SELECT SOURCEID, MAX(VALUES) 
FROM SIGNALS
GROUP BY SOURCEID
HAVING MAX(MAX(VALUES)) > 1500.0
Run Code Online (Sandbox Code Playgroud)

选择至少具有超过1500.0的单个信号的源.

在样本上应用用户定义的函数

SELECT *
FROM SIGNALS
WHERE MAX(LOW_BAND_FILTER("5.0 KHz", VALUES)) > 100.0)
Run Code Online (Sandbox Code Playgroud)

选择在5.0 KHz过滤后至少具有超过100.0的值的信号.

我们需要一些帮助才能:

  1. 找到正确的文件格式,在HDFS上写入信号数据.我想到了Apache Parquet.你将如何构建数据?
  2. 了解正确的数据分析方法:最好创建不同的数据集(例如,使用Spark处理数据并在HDFS上保留结果)或尝试在查询时从原始数据集执行所有操作?
  3. Hive是一个很好的工具来查询我写的那些查询吗?我们在Cloudera Enterprise Hadoop上运行,因此我们也可以使用Impala.
  4. 如果我们从原始数据集生成不同的派生数据集,我们如何跟踪数据的谱系,即知道如何从原始版本生成数据?

非常感谢你!

hadoop hive impala apache-spark parquet

11
推荐指数
1
解决办法
724
查看次数

RODBC错误:无法在mysql中使用SQLExecDirect

我一直在尝试编写一个R脚本来查询Impala数据库.这是对数据库的查询:

select columnA, max(columnB) from databaseA.tableA where columnC in (select distinct(columnC) from databaseB.tableB ) group by columnA order by columnA 
Run Code Online (Sandbox Code Playgroud)

当我手动运行此查询时(通过impala-shell读取:在Rscript之外),我可以获取表内容.但是,当通过R脚本尝试相同时,我收到以下错误:

[1] "HY000 140 [Cloudera][ImpalaODBC] (140) Unsupported query."       
[2] "[RODBC] ERROR: Could not SQLExecDirect 'select columnA, max(columnB) from databaseA.tableA where columnC in (select distinct(columnC) from databaseB.tableB ) group by columnA order by columnA'
closing unused RODBC handle 1
Run Code Online (Sandbox Code Playgroud)

为什么在通过R尝试时查询失败?我该如何解决这个问题?提前致谢 :)

编辑1:

连接脚本如下所示:

library("RODBC");
connection <- odbcConnect("Impala");
query <- "select columnA, max(columnB) from databaseA.tableA where columnC in (select distinct(columnC) from databaseB.tableB …
Run Code Online (Sandbox Code Playgroud)

mysql r impala

10
推荐指数
1
解决办法
1万
查看次数

ETL informatica大数据版(不是云版)可以连接到Cloudera Impala吗?

我们正在尝试对Informatica大数据版本(而不是云版本)进行概念验证,我已经看到我们可以使用HDFS,Hive作为源和目标.但我的问题是Informatica是否连接到Cloudera Impala?如果是这样,我们是否需要为此添加任何其他连接器?我做了全面的研究,以检查是否支持但找不到任何东西.有没有人试过这个?如果是,您可以指定步骤并链接到任何文档吗?

Informatica版本:9.6.1(Hotfix 2)

hadoop informatica informatica-powercenter impala cloudera-cdh

10
推荐指数
1
解决办法
861
查看次数

在Impala中将YYYYMMDD字符串转换为日期

我在Impala中使用SQL来编写此查询.我正在尝试将以YYYYMMDD格式存储的日期字符串转换为日期格式,以便运行如下查询:

SELECT datadate, 
       session_info
FROM database
WHERE datadate >= NOW() - INTERVAL 5 DAY
ORDER BY datadate DESC;
Run Code Online (Sandbox Code Playgroud)

由于>= NOW() - INTERVAL 5 DAY代码不能与YYYYMMDD字符串一起使用,我想找到一种方法将其转换为可用于此类查询的日期格式.我的想法是它应该看起来像这样(基于关于其他SQL查询编辑器的类似问题),但它在Impala中不起作用:

SELECT datadate,
       session_info,
       convert(datetime, '20141008', 102) AS session_date
FROM database
WHERE session_date >= NOW() - INTERVAL 5 DAY
ORDER BY session_date DESC;
Run Code Online (Sandbox Code Playgroud)

任何人都知道在Impala中如何做到这一点?

编辑:

我终于找到了解决问题的有效方法.没有尝试使用Impala的配置CASTCONVERT在Impala中工作,但是下面的查询解决了问题并且完全可操作,允许对包含字符串值的列执行日期数学运算:

SELECT datadate,
       session_info
FROM database
WHERE datadate >= from_unixtime(unix_timestamp(now() - interval 5 days), 'yyyyMMdd')
GROUP BY datadate
ORDER BY datadate DESC;
Run Code Online (Sandbox Code Playgroud)

sql hadoop impala

9
推荐指数
2
解决办法
3万
查看次数

如何在hive或impala中计算表统计信息可以加快Spark SQL中的查询速度?

为了提高性能(例如,对于连接),建议首先计算表静态.

在Hive我可以做::

analyze table <table name> compute statistics;
Run Code Online (Sandbox Code Playgroud)

在Impala中:

compute stats <table name>;
Run Code Online (Sandbox Code Playgroud)

我的spark应用程序(从hive-tables读取)是否也受益于预先计算的统计数据?如果是,我需要运行哪一个?它们是否都保存了hive Metastore中的统计数据?我在Cloudera 5.5.4上使用spark 1.6.1

注意:在参考文献的火花1.6.1(https://spark.apache.org/docs/1.6.1/sql-programming-guide.html)中,spark.sql.autoBroadcastJoinThreshold我找到了一个提示:

请注意,目前只有运行命令ANALYZE TABLE COMPUTE STATISTICS noscan的Hive Metastore表支持统计信息.

hive impala apache-spark apache-spark-sql

9
推荐指数
2
解决办法
4546
查看次数