原SQL:
insert overwrite table in_yuncheng_tbshelf partition (pt)
select userid, bookid, bookname, createts, rpid, addts, updatets, isdel, rcid, category_type, wapbookmarks, addmarkts, readingchapterid, readpercentage, readingts,
substring(addts,0,10) as pt from search_product.yuncheng_tbshelf where pt>='2012-09-01'
报错:
[Fatal Error] Operator FS_3 (id=3): Number of dynamic partitions exceeded hive.exec.max.dynamic.partitions.pernode.. Killing the job.
hive.exec.max.dynamic.partitions.pernode (缺省值100):
每一个mapreduce job允许创建的分区的最大数量,如果超过了这个数量就会报错
hive.exec.max.dynamic.partitions (缺省值1000):一个dml语句允许创建的所有分区的最大数量
hive.exec.max.created.files (缺省值100000):所有的mapreduce job允许创建的文件的最大数量
当源表数据量很大时,单独一个mapreduce job中生成的数据在分区列上可能很分散,举个简单的例子,比如下面的表要用3个map:
1
1
1
2
2
2
3
3
3
如果数据这样分布,那每个mapreduce只需要创建1个分区就可以了:
|1
map1 --> |1
|1
|2
map2 --> |2
|2
|3
map3 --> |3
|3
但是如果数据按下面这样分布,那第一个mapreduce就要创建3个分区:
|1
map1 --> |2
|3
|1
map2 --> |2
|3
|1
map3 --> |2
|3
为了让分区列的值相同的数据尽量在同一个mapreduce中,
这样每一个mapreduce可以尽量少的产生新的文件夹,可以借助distribute by的功能,将分区列值相同的数据放到一起:
insert overwrite table in_yuncheng_tbshelf partition (pt)
select userid, bookid, bookname, createts, rpid, addts, updatets, isdel, rcid, category_type, wapbookmarks, addmarkts, readingchapterid, readpercentage, readingts,
substring(addts,0,10) as pt from search_product.yuncheng_tbshelf where pt>='2012-09-01'
distribute by substring(addts,0,10)
另外,调大hive.exec.max.dynamic.partitions.pernode参数的值不知道是否可行,还没试。
分享到:
相关推荐
“数组越界”错误是Java编程语言中常见的异常类型,表明程序试图访问数组的一个不存在的元素,即下标超出数组边界。在Hive中,这可能源于Hive执行引擎或ORC读写库的问题。在描述中提到的解决方案是替换相关的jar包,...
Hive 是一个基于 Hadoop 的数据仓库工具,用于存储、查询和分析大规模数据。但是,在使用 Hive 过程中,经常会遇到一些常见错误,影响着整个项目的进度和效率。因此,本文将总结常见的 Hive 错误及解决方案,帮助...
在大数据处理领域,Hive作为一个分布式数据仓库工具,被广泛用于存储和管理大规模结构化数据。Hive的元数据是其核心组成部分,它包含了表、分区、列等信息,使得Hive能够正确地组织和查询数据。通常,Hive元数据默认...
在大数据处理领域,Hive作为一个基于Hadoop的数据仓库工具,被广泛用于存储和查询大规模数据集。然而,Hive在处理大量小文件时可能会遇到性能问题,因为HDFS(Hadoop分布式文件系统)对小文件的管理效率较低。为了...
在读取 Hive 数据时,我们可以通过创建一个 HiveContext 对象,然后使用 `sql()` 函数执行 SQL 查询。写入 Hive 需要将 DataFrame 转换为 Dataset,然后使用 `saveAsTable()` 方法指定表名和存储格式。 接下来,`...
#### 一、Hive连接报错 在更换网络接口卡后重新启动服务时,可能会遇到Hive连接失败的问题。此类问题通常与元数据存储中的异常有关,例如存在多个版本的元数据或者端口被其他服务占用。 1. **元数据版本冲突**: ...
同时,也会介绍错误排查和日志分析,帮助读者解决Hive使用过程中可能遇到的问题。 总的来说,《Hive编程手册,从入门到精通》是一本全方位的Hive学习资源,涵盖了理论知识、实战技能和优化策略,无论你是初入大数据...
Hive主要为非结构化或半结构化的数据提供了一个灵活的数据层,使得数据分析人员可以无需深入了解MapReduce即可进行数据操作。 2. **Hive架构**:包括Hive的组件、工作原理以及与Hadoop的关系。例如,Hive Server、...
Hadoop Hive 是一个基于 Hadoop 的数据仓库工具,用于处理和分析大量分布式数据。它提供了SQL-like查询语言,称为HQL,使得非程序员也能方便地进行大数据分析。以下是对Hadoop Hive入门学习的详细总结: ### 1. ...
Sqoop是一个用于在关系数据库和Hadoop之间传输数据的工具,它可以高效地批量导入和导出数据。而Hive则是基于Hadoop的数据仓库系统,提供了SQL-like查询语言(HQL)来操作存储在HDFS上的大量数据。当使用Sqoop将数据...
### 大数据技术之Hive学习—Hive实战之谷粒影音+常见错误及解决方案 #### 10.1 需求描述 本实战案例旨在通过对谷粒影音视频网站的大数据分析,提炼出一系列关键指标,包括但不限于视频观看数量、类别热度等Top N...
Hive是Apache Hadoop生态系统中的一个数据仓库工具,它允许用户使用SQL-like的语言(称为HQL,Hive Query Language)对大规模分布式数据集进行查询、分析和管理。在本主题中,我们将深入探讨Hive的基本语法及其使用...
Hive 是一个基于 Hadoop 的数据仓库工具,用于将结构化的数据文件映射为一张数据库表,并提供 SQL 类似的查询语言(HQL)来查询数据。Hive 主要由以下几个组件组成: 1. **Hive Metastore**:存储元数据,如表名、...
Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它使得在大规模数据集上运行应用程序变得更加简单。Hive则是基于Hadoop的数据仓库工具,它提供了SQL-like查询语言HQL,使得非程序员也能方便地处理和分析...
例如,可以创建一个时间分区的表,然后将"big_data"按照日期分段导入对应的分区。 4. **数据对比**:"small_data"可能用于验证"big_data"的处理结果。在大数据处理中,我们常常用小规模数据进行快速测试,确保算法...
4. **用户界面**:为了便于管理和监控,HiveBDR可能包含一个用户界面,允许管理员配置复制规则、查看复制状态、处理异常等。 5. **Python支持**:标签“Python”表明HiveBDR的开发可能使用了Python语言。Python因其...
然而,在此过程中遇到了一个非常奇怪的问题:无论是使用Hive还是Spark执行SQL操作,都会出现异常,导致任务失败。具体的错误信息如下: ``` Most recent failure: Lost task 1.1 in stage 0.0 (TID 2, master02, ...
Hive是Apache软件基金会的一个项目,它提供了一个基于Hadoop的数据仓库工具,用于查询和管理大规模数据集。HWI是Hive的一部分,允许用户通过Web浏览器直接执行HQL(Hive Query Language)查询,方便数据分析师进行...
【标题】VerticaHiveStorageHandler 是一个专为在Apache Hive与Vertica数据库之间进行数据交换而设计的存储处理程序。Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL-like查询语言(HQL)来操作分布式数据...