当前位置: 首页 > news >正文

手机上怎么制作网站吗抚州网站开发

手机上怎么制作网站吗,抚州网站开发,企业所得税一般交多少,怎么做公司内部网站关系型数据库与大数据平台之间的数据传输之前写过一些 使用Sqoop将数据在HDFS与MySQL互导 使用Sqoop将SQL Server视图中数据导入Hive 使用DataX将Hive与MySQL中的表互导 使用Sqoop将Hive数据导出到TiDB虽然没写过,但网上一堆写的,那为什么我要专门写一下…

关系型数据库与大数据平台之间的数据传输之前写过一些
使用Sqoop将数据在HDFS与MySQL互导
使用Sqoop将SQL Server视图中数据导入Hive
使用DataX将Hive与MySQL中的表互导
使用Sqoop将Hive数据导出到TiDB虽然没写过,但网上一堆写的,那为什么我要专门写一下呢?
我发现一些大家可能会忽略但很重要的地方!
所以,请继续看下去,你肯定会有收获的!!!


文章目录

    • 1 建Hive表
    • 2 建TiDB表
    • 3 Sqoop 脚本
    • 4 问题排查
    • 5 问题处理

1 建Hive表

注意分隔符 ‘\001’,用别的也可以,但要和Sqoop命令一致

create table test_table(contract_no                         string                  COMMENT '合同号',plan_date                           date                    COMMENT '应还日期',dt                                  string                  COMMENT '数据日期'
)
comment '测试表'
row format delimited fields terminated by '\001'
;

2 建TiDB表

注意TiDB表多了个自增主键 id

create table test_table(id bigint PRIMARY KEY AUTO_INCREMENT,contract_no                         varchar(50)             COMMENT '合同号',plan_date                           date                    COMMENT '应还日期',dt                                  varchar(10)             COMMENT '数据日期'
);

3 Sqoop 脚本

注意如果源表和目标表字段不完全相同,可以使用 --columns 选取部分字段,这里因为TiDB表多一个自增id,使用 --columns “contract_no,plan_date,dt”

#!/bin/sh
source /etc/profile
sqoop export --D mapred.job.queue.name=xxx \
--connect jdbc:mysql://xxx:3306/xxx \
--username xxx \
--password xxx \
--table test_table \
--export-dir /user/hive/warehouse/dwd.db/test_table/ \
--input-fields-terminated-by '\001' \ # 与hive表分隔符一致
--num-mappers 5 \ # 根据数据量确定,写太大会导致小文件过多,太小跑不动
--input-null-string '\\N' \ # 将字符串类型字段中的\N替换为null
--input-null-non-string '\\N' \ # 将非字符串类型字段中的\N替换为null
--columns "contract_no,plan_date,dt"

上面是将hive数据export导出到tidb。注意在hive中null值默认存储成了\N(可修改),所以在import导入Hive时需要加下面命令。注意export和import区别!!!

--null-string '\\N' \ # 将字符串类型字段中的null值替换为\N
--null-non-string '\\N' \ # 将非字符串类型字段中的null值替换为\N

4 问题排查

查看报错日志,注意加粗部分,Sqoop会生成一个“同步表名.java”文件,查看报错所在行,定位问题。
Caused by: java.lang.RuntimeException: Can’t parse input data: ‘\N’
at test_table.__loadFromFields(test_table.java:765)
at test_table.parse(test_table.java:648)
at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:83)
… 10 more
Caused by: java.lang.IllegalArgumentException
at java.sql.Date.valueOf(Date.java:143)
at test_table.__loadFromFields(test_table.java:722)
… 12 more
找到722行,发现plan_date字段有null值,因为hive中null值存储成了\N,而该字段是date类型,从hive到tidb时插不进去。
if (__cur_str.equals(“null”) || __cur_str.length() == 0) { this.plan_date = null; } else {
this.plan_date = java.sql.Date.valueOf(__cur_str);
}

5 问题处理

经过上面排查,问题已经定位到plan_date字段中有null值,有两个解决方案,一是将null值替换为默认值,一是保留null值,加上下面两个参数。因为hive中null值默认存储成了\N(可修改)!!!
–input-null-string ‘\N’ \ # 将字符串类型字段中的\N替换为null
–input-null-non-string ‘\N’ \ # 将非字符串类型字段中的\N替换为null
PS:TiDB表加索引不影响Sqoop
CREATE INDEX idx_source_date ON tabname(col1, col2);

http://www.yayakq.cn/news/418564/

相关文章:

  • 汽车之家 网站建设视频音乐网站怎样建设
  • 中国贸易网站开通企业邮箱要钱吗
  • 目标网站都有哪些内容噼里啪啦免费观看高清动漫
  • 重庆綦江网站制作公司电话seo岗位是什么意思
  • 南通网站免费建设苏州好的网络科技公司
  • 怎么做二手网站代理贵阳网站关键字优化
  • 试玩网站开发国外网站在国内备案
  • 网站开发与iso9001关系王通seo教程
  • 东莞建设网站公司哪家好专业开发小程序公司
  • 自己做网站转发新闻违法么wordpress没有样式表
  • 建设网站课程设计摘要迷糊娃 wordpress 主题
  • 雄安建设集团有限公司网站工业和信息化部反诈中心发短信
  • 呼和浩特网站建设宣传wordpress 主循环
  • 石家庄网站制作找谁asp做的网站怎么发布
  • 做英语网站建站公司成功案例
  • 网站开发 技术问题一个网站的建设需要什么
  • wordpress占用空间网站优化内链怎么做
  • 天津制作公司网站seo营销学校
  • 模仿一个网站建设多少钱深圳市易捷网络科技有限公司
  • 网站推广手段wordpress内容页不显示
  • 成都兼职建设网站海口官网设计公司
  • 网站建设美词原创网站不能上传图片
  • 企顺网网站建设站长之家权重
  • 手机网站设计与实现毕业设计东莞网络展示平台
  • 做队徽的网站seo是什么专业
  • 怎么做类似知乎的网站做网站0基础写代码
  • 最稳定的免费的资源共享网站wordpress 商品插件
  • 网站定制兴田德润i在哪里兰州网站制作服务电话
  • 网站制作服务好的商家可以分为( )
  • 网站内容建设和运营工作心理学重点学科建设网站