解决:org.apache.hadoop.hive.serde2.objectinspector.UnionStructObjectInspector$MyField@62bab858,

前言

今天用spark把一个csv文件导到hive后,使用select * from test.tablett limit 10 的时候,直接给我报错了

cannot find field flow from [org.apache.hadoop.hive.serde2.objectinspector.UnionStructObjectInspector$MyField@6cfac647, org.apache.hadoop.hive.serde2.objectinspector.UnionStructObjectInspector$MyField@bf7d971, org.apache.hadoop.hive.serde2.objectinspector.UnionStructObjectInspector$MyField@6e3b632c, org.apache.hadoop.hive.serde2.objectinspector.UnionStructObjectInspector$MyField@564523d5, org.apache.hadoop.hive.serde2.objectinspector.UnionStructObjectInspector$MyField@6cb71fa4, org.apache.hadoop.hive.serde2.objectinspector.UnionStructObjectInspector$MyField@59be7f12, org.apache.hadoop.hive.serde2.objectinspector.UnionStructObjectInspector$MyField@6c29550a, org.apache.hadoop.hive.serde2.objectinspector.UnionStructObjectInspector$MyField@130d98d1, org.apache.hadoop.hive.serde2.objectinspector.UnionStructObjectInspector$MyField@4793ff2b, org.apache.hadoop.hive.serde2.objectinspector.UnionStructObjectInspector$MyField@6d7f5e24, org.apache.hadoop.hive.serde2.objectinspector.UnionStructObjectInspector$MyField@4 ...

在这里插入图片描述

 报错的大致内容是,无法找到字段,这就让我很懵逼了,让后我看了下我的csv的字段内容
在这里插入图片描述
原来是因为列名里面有 . _等特殊符号的原因,解决方法也很简单了,只需要把这些特殊符号删除点就可以了,spark提供了很多列名重命名的方法,不过我的csv文件有50多列,所以还是批量替换来的快些

String[] columns = df.columns();

for(int i=0;i<columns.length;i++){

     df=df.withColumnRenamed(
             columns[i],
             columns[i].replace(".","").replace("_","").toLowerCase()
     );
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值