标签: hive

COALESCE与Hive SQL

由于Hive上没有IFNULL,ISNULL或者NVL支持函数,我将NULL转换为0.我试过COALESCE(*column name*, 0)但收到了以下错误消息:

参数类型不匹配0:COALESCE之后的表达式应该都具有相同的类型:"bigint"是预期的但是找到"int"

怎么解决这个?

sql hive

26
推荐指数
4
解决办法
11万
查看次数

在HIVE QL的表格中添加一列

我在HIVE中编写代码来创建一个包含1300行和6列的表:

create table test1 as SELECT cd_screen_function,
     SUM(access_count) AS max_count,
     MIN(response_time_min) as response_time_min,
     AVG(response_time_avg) as response_time_avg,
     MAX(response_time_max) as response_time_max,
     SUM(response_time_tot) as response_time_tot,
     COUNT(*) as row_count
     FROM sheet WHERE  ts_update BETWEEN unix_timestamp('2012-11-01 00:00:00') AND 
     unix_timestamp('2012-11-30 00:00:00') and cd_office = '016'
     GROUP BY cd_screen_function ORDER BY max_count DESC, cd_screen_function;
Run Code Online (Sandbox Code Playgroud)

现在我想添加另一列,access_count1其中包含所有1300行的唯一值,值将是sum(max_count).max_count是我现有表中的一列.我怎么能这样做?我试图通过此代码更改表ALTER TABLE test1 ADD COLUMNS (access_count1 int) set default sum(max_count);

hadoop hive hiveql

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

OLAP可以在BigTable中完成吗?

在过去,我曾经使用在MySQL上运行的OLAP多维数据集构建WebAnalytics.现在我使用OLAP多维数据集的方式只是一个大表(好吧,它比那更智能地存储),其中每一行基本上是一个测量或聚合的测量集.每个度量都有一堆维度(即哪个页面名称,用户名,ip等)和一堆值(即多少个综合浏览量,多少访问者等).

您在这样的表上运行的查询通常采用以下形式(meta-SQL):

SELECT SUM(hits), SUM(bytes),
FROM MyCube
WHERE date='20090914' and pagename='Homepage' and browser!='googlebot'
GROUP BY hour
Run Code Online (Sandbox Code Playgroud)

因此,您可以使用上述过滤器获取所选日期中每小时的总计.一个障碍是这些立方体通常意味着全表扫描(各种原因),这意味着你可以制作这些东西的尺寸(在MiB中)的实际限制.

我正在学习Hadoop等的来龙去脉.

在BigTable上运行上述查询作为mapreduce看起来很容易:只需将'小时'作为键,在地图中过滤并通过对值进行求和来减少.

您是否可以在"实时"(即通过用户界面和用户得到他们的答案,而不是批处理模式)上运行BigTable类型的系统上面(或至少具有相同输出)的查询?

如果不; 在BigTable/Hadoop/HBase/Hive等领域做这样的事情的适当技术是什么?

olap hadoop hbase hive mapreduce

25
推荐指数
1
解决办法
7767
查看次数

Hive无法手动设置减速器数量

我有以下配置单元查询:

select count(distinct id) as total from mytable;
Run Code Online (Sandbox Code Playgroud)

自动生成:
1408 Mappers
1 Reducer

我需要手动设置reducer的数量,我尝试了以下内容:

set mapred.reduce.tasks=50 
set hive.exec.reducers.max=50
Run Code Online (Sandbox Code Playgroud)

但这些设置似乎都没有得到尊重.该查询需要永远运行.有没有办法手动设置Reducer或重写查询,以便它可以导致更多的reducers?谢谢!

hadoop hive mapreduce

25
推荐指数
2
解决办法
4万
查看次数

hive sql找到最新记录

表是:

create table test (
id string,
name string,
age string,
modified string)
Run Code Online (Sandbox Code Playgroud)

像这样的数据:

id    name   age  modifed
1     a      10   2011-11-11 11:11:11
1     a      11   2012-11-11 12:00:00
2     b      20   2012-12-10 10:11:12
2     b      20   2012-12-10 10:11:12
2     b      20   2012-12-12 10:11:12
2     b      20   2012-12-15 10:11:12
Run Code Online (Sandbox Code Playgroud)

我想通过id得到最新记录(包括每个colums id,name,age,modifed)组,如上面的数据,正确的结果是:

1     a      11   2012-11-11 12:00:00
2     b      20   2012-12-15 10:11:12
Run Code Online (Sandbox Code Playgroud)

我喜欢这个:

insert overwrite table t 
select b.id, b.name, b.age, b.modified 
from (
        select id,max(modified) as modified 
        from test 
        group by …
Run Code Online (Sandbox Code Playgroud)

sql hive group-by max

25
推荐指数
4
解决办法
4万
查看次数

书籍开始学习大数据

我想开始学习大数据技术.我希望将来在这个领域工作.有没有人知道好书开始学习它?Hadoop,HBase.

初学者 - 中级 - 高级 -

提前致谢

hadoop hbase hive pentaho bigdata

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

写入HDFS只能复制到0个节点而不是minReplication(= 1)

我有3个数据节点正在运行,而在运行作业时,我得到以下错误,

java.io.IOException:File/user/ashsshar/olhcache/loaderMap9b663bd9只能复制到0个节点而不是minReplication(= 1).运行中有3个数据节点,此操作中排除了3个节点.在org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget(BlockManager.java:1325)

当我们的DataNode实例空间不足或DataNode未运行时,主要出现此错误.我尝试重新启动DataNodes但仍然遇到相同的错误.

我的集群节点上的dfsadmin -reports清楚地显示了大量可用空间.

我不确定为什么会这样.

java hadoop hive mapreduce hdfs

24
推荐指数
2
解决办法
6万
查看次数

Hive Alter表更改列名

我想在Hive中重命名columnName.有没有办法在Hive中重命名列名.

tableA(column1,_c1,_c2)到tableA(column1,column2,column3)??

hive alter-table alter

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

启动HIVE时java.net.URISyntaxException

我是HIVE的新手.我已经设置了hadoop并且运行良好,我想设置Hive.当我启动配置单元时,它显示错误

Caused by: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
Run Code Online (Sandbox Code Playgroud)

有什么解决方案吗?

hadoop hive

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

无法使用Spark SQL中的现有Hive永久UDF

我之前已经在hive中注册了一个UDF.永久不是TEMPORARY.它直线工作.

CREATE FUNCTION normaliseURL AS 'com.example.hive.udfs.NormaliseURL' USING JAR 'hdfs://udfs/hive-udfs.jar';
Run Code Online (Sandbox Code Playgroud)

我有火花配置使用蜂巢Metastore.配置正常,因为我可以查询配置单元表.我可以看到UDF;

In [9]: spark.sql('describe function normaliseURL').show(truncate=False)
+-------------------------------------------+
|function_desc                              |
+-------------------------------------------+
|Function: default.normaliseURL             |
|Class: com.example.hive.udfs.NormaliseURL  |
|Usage: N/A.                                |
+-------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

但是我不能在sql语句中使用UDF;

spark.sql('SELECT normaliseURL("value")')
AnalysisException: "Undefined function: 'default.normaliseURL'. This function is neither a registered temporary function nor a permanent function registered in the database 'default'.; line 1 pos 7"
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用spark注册UDF(绕过Metastore),则无法注册它,表明它已经存在.

In [12]: spark.sql("create function normaliseURL as 'com.example.hive.udfs.NormaliseURL'")
AnalysisException: "Function 'default.normaliseURL' already exists in database 'default';"
Run Code Online (Sandbox Code Playgroud)

我正在使用Spark 2.0,hive metastore 1.1.0.UDF是scala,我的spark驱动程序代码是python.

我很难过. …

hive apache-spark apache-spark-sql udf

24
推荐指数
1
解决办法
8429
查看次数