码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【踩坑实录】datax从pg同步数据到hive数据全为null问题


    目录

    一、问题描述

    二、定位原因

    三、解决方案

     1、建表分隔符和导入时的分隔符不一致

    1.修改建表分隔符

    2.建表时直接指定好分隔符

    3.针对分区表和无分区表的区别

    2、字段的数据类型不一致

    3、文件类型和压缩格式不对(ORC、TEXTFILE...)

    4、字段值包含了分隔符,可以换一个分隔符试试


    一、问题描述

    hive建表ddl:

    1. create table table_name(
    2. a bigint,
    3. b string
    4. )
    5. comment  'xx表' 
    6. partitioned by (`ds` string) ;

    datax自定义json:

    1. {
    2. "job": {
    3. "content": [
    4. {
    5. "reader": {
    6. "name": "postgresqlreader",
    7. "parameter": {
    8. "connection": [
    9. {
    10. "jdbcUrl": ["jdbc:postgresql://ip:host/db"],
    11. "querySql": ["select a,b from table_name"],
    12. }
    13. ],
    14. "username": "name",
    15. "password": "pwd"
    16. }
    17. },
    18. "writer": {
    19. "name": "hdfswriter",
    20. "parameter": {
    21. "defaultFS": "hdfs://ip:host",
    22. "fileType": "text",
    23. "path": "/user/hive/warehouse/db.db/table_name/ds=${ds}",
    24. "fileName": "table_name",
    25. "column": [
    26. {"name":"a","type":"bigint"},
    27. {"name":"b","type":"string"}
    28. ],
    29. "writeMode": "append",
    30. "fieldDelimiter": "\t",
    31. "encoding": "utf-8"
    32. }
    33. }
    34. }],
    35. "setting": {
    36. "speed": {
    37. "channel": "1"
    38. }
    39. }
    40. }
    41. }

    执行后在hue上查询该表数据发现所有数据都为null

    二、定位原因

    可能原因如下:

    1.建表分隔符和导入时的分隔符不一致

    2.字段的数据类型不一致

    3.文件类型和压缩格式不对(ORC、TEXTFILE...)

    4.字段值包含了分隔符,可以换一个分隔符试试

    三、解决方案

     1、建表分隔符和导入时的分隔符不一致

    1.修改建表分隔符

    alter table ds.ods_user_info_dd set serdeproperties('field.delim'='\t');

    2.建表时直接指定好分隔符

    1. create table table_name(
    2. a bigint,
    3. b string
    4. )
    5. comment  'xx表' 
    6. partitioned by (`ds` string)
    7. row format delimited fields terminated by '\t';

    3.针对分区表和无分区表的区别

    2、字段的数据类型不一致

    修改字段类型与源表一致

    alter table 表名 change column 原字段名 现字段名 字段类型;

    3、文件类型和压缩格式不对(ORC、TEXTFILE...)

    1. --修改为ORC格式
    2. ALTER TABLE 表名 SET FILEFORMAT ORC
    3. --修改为Text
    4. ALTER TABLE 表名 SET FILEFORMAT TEXTFILE

    4、字段值包含了分隔符,可以换一个分隔符试试

  • 相关阅读:
    LSTM基础
    十分钟学完简单工厂,普通工厂,抽象工厂
    数据的标准化处理——基于python
    【云原生】阿里云容器镜像服务产品
    深入理解 Python 虚拟机:复数(complex)的实现原理及源码剖析
    简述对象、类、类结构、消息、方法的基本概念。
    14、顺时针打印矩阵
    计算机组成原理---第七章输入输出系统---I/O系统基本概念,外部系统---选择题
    AIGC实战 - 使用变分自编码器生成面部图像
    开源博客项目Blog .NET Core源码学习(6:雪花算法)
  • 原文地址:https://blog.csdn.net/chimchim66/article/details/126489068
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号