Spark——DataFrame/Hive表导出为Excel、CSV之逆向思维

问题场景

我处理了一批数据,写入到了Hive表中。算法工程师想要用这些数据来训练模型,需要先将这部分数据以Excel或csv的格式导出到本地,但是因为Hive表中有一个JSON字符串类型的字段,而且有的字符串比较长,不管是在Hue、Zepplin还是用代码导出Excel,都会造成这一列数据被截断,因为Excel中单个cell多能容纳的最大长度为32767个字节。

然后,我就尝试导出为csv文件,但是导出为csv文件又引出了另外一个问题,就是后续在解析csv文件时,要通过分隔符(csv格式默认分隔符为逗号",")来切分所有列。又因为在导出为csv文件时,指定的分隔符只能是单个字符,而那个JSON字符串列中存在各种特殊符号,所以就造成,不管用什么分隔符,后续都无法正确切分所有列。

因为惯性思维,或者思维定式吧,我就一直在想,怎么对csv文件进行处理才能正确切分所有列,想了两三个小时,试了很多方法,发现还是绕不过分隔符的问题。

突然,灵光一现,我用一个"~"作为分隔符,虽然JSON字符串列中存在这个分隔符,但是我可以先把这个列中的 这个分隔符替换为其他比较复杂的分隔符,在我把csv文件切分未多列之后,我将之前替换的复杂分隔符在替换回波浪线不就行了吗!

一点思考

通过上面的这个问题,发现在很多时候,我们思考问题的方式真的很容易思维定式,只会想着正向思考问题,但其实,在正向思考问题得不出解决方案的时候,我们应该要想到逆向思维,往往可能会出现柳暗花明又一村的效果。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值