Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【踩坑实录】-bucketId out of range: -1 (state=,code=0)

【踩坑实录】-bucketId out of range: -1 (state=,code=0)

作者头像
chimchim
发布于 2022-11-13 05:25:19
发布于 2022-11-13 05:25:19
92100
代码可运行
举报
运行总次数:0
代码可运行

目录

目录

一、背景

二、代码

1.hive 建表语句

2.datax自定义json

3.查询语句

三、定位问题

四、解决方案

1.load data

2.设置参数

3.文件格式



一、背景

datax同步postgre库表数据到hive表,同步完成后select报错

java.io.IOException: java.lang.IllegalArgumentException: Bucket ID out of range: -1

二、代码

1.hive 建表语句

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create table if not exists hive_table_name(

col1 string,

col2 srting)

row format delimited fields terminated by '\t'
stored as orc;

2.datax自定义json

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "postgresqlreader",
                    "parameter": {
                        "connection": [
                            {
                                "jdbcUrl": ["jdbc:postgresql://ip:port/db"],
                                "querySql": ["select col1,col2 from pg_table_name"],
                            }
                        ],
                        "username": "user",
                        "password": "pwd"
                    }
                },
               "writer": {
                                "name": "hdfswriter",
                                "parameter": {
                                        "defaultFS": "hdfs://ip:port",
                                        "fileType": "orc",
                                        "path": "/user/hive/warehouse/db_name.db/hive_table_name",
                                        "fileName": "hive_table_name",
                                         "column": [
                                                    {"name":"col1","type":"string"},
                                                    {"name":"col2","type":"string"}
                                                    ],
                                        "writeMode": "append",
                                        "fieldDelimiter": "\t",
                                        "encoding": "utf-8"
                                }
                        }
                }],
                "setting": {
                        "speed": {
                                "channel": "1"
                        },
                        "errorLimit": {
                                "record": 0,
                                "percentage": 0.02
                        }
                }
        }
}

3.查询语句

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from hive_table_name;

三、定位问题

hive3.1默认是桶表,但是我没有分桶,桶数量就是-1,这里就会报错。

定位原因为hdfs文件在hive中不可访问,没有加载到hive表中。

hadoop3.1建表默认创建acid表,acid表只支持ORC格式

四、解决方案

1.load data

手动将hdfs文件映射到hive表中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
load data inpath '/user/hive/warehouse/db_name.db/hive_table_name' 
overwrite into table hive_table_name; 

2.设置参数

hive.fetch.task.conversion

这个属性有3个可选的值:

none :关闭fetch task优化

minimal:只在select *、使用分区列过滤、带有limit的语句上优化

more:在minimal的基础上,select 不仅可以是*,还可以单独选择几列,并且fitler也不再局限于分区字段,同时支持虚拟列(别名)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set hive.fetch.task.conversion=none; 

3.文件格式

建表语句建成textfile格式(一劳永逸)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create table if not exists hive_table_name(

col1 string,

col2 srting)

row format delimited fields terminated by '\t'
stored as textfile;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
hive基础总结(面试常用)
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 Metastore (hive元数据) Hive将元数据存储在数据库中,比如mysql ,derby.Hive中的元数据包括表的名称,表的列和分区及其属性,表的数据所在的目录 Hive数据存储在HDFS,大部分的查询、计算由mapreduce完成 Hive数据仓库于数据库的异同 (1)由于Hive采用了SQL的查询语言HQL,因此很容易将Hive理解为数据库。其实从结构上来看,Hive和数据库除了拥有类似的查询语言, 再无类似之处。 (2)数据存储位置。 hdfs raw local fs (3)数据格式。 分隔符 (4)数据更新。hive读多写少。Hive中不支持对数据的改写和添加,所有的数据都是在加载的时候中确定好的。 INSERT INTO … VALUES添加数据,使用UPDATE … SET修改数据 不支持的 HDFS 一次写入多次读取 (5) 执行。hive通过MapReduce来实现的 而数据库通常有自己的执行引擎。 (6)执行延迟。由于没有索引,需要扫描整个表,因此延迟较高。另外一个导致Hive执行延迟高的因素是MapReduce框架 (7)可扩展性 (8)数据规模。 hive几种基本表类型:内部表、外部表、分区表、桶表 内部表(管理表)和外部表的区别: 创建表 外部表创建表的时候,不会移动数到数据仓库目录中(/user/hive/warehouse),只会记录表数据存放的路径 内部表会把数据复制或剪切到表的目录下 删除表 外部表在删除表的时候只会删除表的元数据信息不会删除表数据 内部表删除时会将元数据信息和表数据同时删除 表类型一、管理表或内部表Table Type: MANAGED_TABLE
用户1217611
2019/05/25
8750
Hive_
HiveSQL ->AST(抽象语法树) -> QB(查询块) ->OperatorTree(操作树)->优化后的操作树->mapreduce任务树->优化后的mapreduce任务树
挽风
2023/10/17
3910
Hive_
【踩坑实录】datax从pg同步数据到hive数据全为null问题
目录 一、问题描述 二、定位原因 三、解决方案  1、建表分隔符和导入时的分隔符不一致 1.修改建表分隔符 2.建表时直接指定好分隔符 3.针对分区表和无分区表的区别 2、字段的数据类型不一致 3、文件类型和压缩格式不对(ORC、TEXTFILE...) 4、字段值包含了分隔符,可以换一个分隔符试试 ---- 一、问题描述 hive建表ddl: create table table_name( a bigint, b string ) comment  'xx表'  partitioned by
chimchim
2022/11/13
1.4K0
【踩坑实录】datax从pg同步数据到hive数据全为null问题
大数据技术之_08_Hive学习_04_压缩和存储(Hive高级)+ 企业级调优(Hive优化)
1、CentOS联网   配置CentOS能连接外网。Linux虚拟机 ping www.baidu.com 是畅通的。 注意:采用root角色编译,减少文件夹权限出现问题。 2、jar包准备(hadoop源码、JDK8、maven、protobuf) (1)hadoop-2.7.2-src.tar.gz (2)jdk-8u144-linux-x64.tar.gz (3)snappy-1.1.3.tar.gz (4)apache-maven-3.0.5-bin.tar.gz (5)protobuf-2.5.0.tar.gz
黑泽君
2019/03/11
1.2K0
大数据技术之_08_Hive学习_04_压缩和存储(Hive高级)+ 企业级调优(Hive优化)
Hive 基本操作(创建数据库与创建数据库表)
修改数据库 可以使用alter database 命令来修改数据库的一些属性。但是数据库的元数据信息是不可更改的,包括数据库的名称以及数据库所在的位置
Maynor
2021/04/09
5.7K0
Hive SQL 语法大全,宇宙最强整理,建议收藏
LOCATION 是指定外部表的存储路径,MANAGEDLOCATION 是指定管理表的存储路径(hive 4.0.0 才支持),官方建议默认就行,让所有的表都在一个根目录下。
kk大数据
2020/11/03
7.7K0
五万字 | Hive知识体系保姆级教程
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
数据社
2021/08/27
2.2K0
五万字 | Hive知识体系保姆级教程
Postgre SQL ERROR:there is no unique or exclusion constraint matching the ON CONFLICT specification
 ERROR: there is no unique or exclusion constraint matching the ON CONFLICT specification  Call getNextException to see other errors in the batch.
chimchim
2023/10/17
7990
Postgre SQL ERROR:there is no unique or exclusion constraint matching the ON CONFLICT specification
快速学习-DDL数据定义
1)创建一个数据库,数据库在 HDFS 上的默认存储路径是/user/hive/warehouse/*.db。
cwl_java
2020/02/21
6050
快速学习-DDL数据定义
[1022]Hive insert 字段表错位
查询来的数据没发现有什么异常;照理说逐字段查出来没问题,再逐字段插入应该不会错位。实际上 hive 的 insert 跟想象中传统的 insert 不太一样。
周小董
2021/07/14
2.1K0
[1022]Hive insert 字段表错位
2021年大数据Hive(三):手把手教你如何吃透Hive数据库和表操作(学会秒变数仓大佬)
1、CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXISTS 选项来忽略这个异常。
Lansonli
2021/10/11
2K0
大数据技术之_08_Hive学习_02_DDL数据定义(创建/查询/修改/删除数据库+创建表+分区表+修改表+删除表)+DML数据操作(数据导入+数据导出+清除表中数据)
1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。
黑泽君
2019/03/08
1.8K0
大数据技术之_08_Hive学习_02_DDL数据定义(创建/查询/修改/删除数据库+创建表+分区表+修改表+删除表)+DML数据操作(数据导入+数据导出+清除表中数据)
数据分析工具篇——HQL中DDL操作
1.1) CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXISTS 选项来忽略这个异常。
数据森麟
2021/03/09
6930
数据分析工具篇——HQL中DDL操作
大数据环境搭建-Hive和Mysql
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
码客说
2022/04/19
1.3K0
大数据环境搭建-Hive和Mysql
hive之路7-hive之DDL操作
在Hive中,数据库是一个命名空间或表的集合。创建了数据库之后,在HDFS上的存储路径默认为/usr/hive/warehouse/*.db具体语法为:
皮大大
2021/03/02
6490
HiveQL快速使用
--define可以定义用户变量 --hivevar可以定义用户遍历 --hiveconf使用key-value得到hive-site.xml配值的变量
Tim在路上
2020/08/04
8130
Hive学习3:Hive三种建表语句详解
注:hive其他语法在hive官网有说明,建议初学者,去官网学习一手的资料, 官网:https://cwiki.apache.org/confluence/display/Hive/Home#Home-UserDocumentation
全栈程序员站长
2022/10/03
6.3K0
Hive学习3:Hive三种建表语句详解
Hive个人笔记总结
①保证环境变量中有JAVA_HOME ②基于HADOOP工作,保证环境变量中有HADOOP_HOME ③在环境变量中配置HIVE_HOME,默认hive在启动时,会读取HIVE_HOME/conf中的配置文件
Java架构师必看
2021/05/14
2.7K0
一脸懵逼学习Hive的使用以及常用语法(Hive语法即Hql语法)
该文介绍了关于数据库连接池的知识点,包括概念、特点、配置方式、调优参数和常见问题。同时,文章还提供了如何正确配置和优化数据库连接池的相关建议,以帮助开发人员更好地掌握和应用该技术。
别先生
2018/01/02
3.7K0
一脸懵逼学习Hive的使用以及常用语法(Hive语法即Hql语法)
数据仓库之Hive快速入门 - 离线&实时数仓架构
了解了Hive中的SQL基本操作之后,我们来看看Hive是如何将SQL转换为MapReduce任务的,整个转换过程分为六个阶段:
端碗吹水
2020/11/11
5.1K0
推荐阅读
相关推荐
hive基础总结(面试常用)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验