码农知识堂 - 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、字段值包含了分隔符,可以换一个分隔符试试

  • 相关阅读:
    【echarts】如何修改折线图X轴每个刻度的间隔宽度,让拥挤的空间变大,所有坐标点的文案可以显示得下,Echarts x轴文本内容太长的几种解决方案
    Open3D ICP精配准(使用鲁棒性核函数)
    浅谈二叉树
    PyTorch深度学习基础之Tensor对象及其应用的讲解及实战(附源码 简单易懂 包括分段 映射 矩阵乘法 随机数等等)
    Java Character.SubSet toString()方法具有什么功能呢?
    PeLK:101 x 101 的超大卷积网络,同参数量下反超 ViT | CVPR 2024
    Linux下 gdb调试打印数组元素说明
    python文件操作之xml转txt
    分享一个学英语的网站
    Linux基础
  • 原文地址: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号