searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

spark导出数据乱码排查

2024-09-26 09:25:14
19
0

使用spark-sql执行sql语句重定向输出结果至文件是正常的。但是不适用大批量数据的导出。

使用insert overwrite的方式导出数据时发现结果文件乱码。

 

原因

排除了spark操作时都使用了utf-8编码影响外

在配置文件hive.exec.compress.output=true情况下,hive会对最终输出结果进行压缩。

压缩算法会使用配置mapred.output.compression.codec=org.apache.Hadoop.io.compress.SnappyCodec

所以输出的文件在使用cat查看会显示为乱码,需要解压缩文件后查看

snzip -d /path/XXX.snappy服务器本地使用

hadoop fs -text /path/XXX.snappy文件在hdfs中使用

或者在导出数据时配置关闭hive.exec.compress.output参数。

例:

spark-sql --hiveconf hive.exec.compress.output=false -e "INSERT OVERWRITE LOCAL DIRECTORY '/tmp/test' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' stored as textfile select * from test where abc=‘XXX’;”

 

snappy压缩算法能压缩文件到原来的50%-70%。关闭输出结果压缩的功能后会增大存储空间和网络传输的开销。

0条评论
作者已关闭评论
王****宇
2文章数
0粉丝数
王****宇
2 文章 | 0 粉丝
王****宇
2文章数
0粉丝数
王****宇
2 文章 | 0 粉丝
原创

spark导出数据乱码排查

2024-09-26 09:25:14
19
0

使用spark-sql执行sql语句重定向输出结果至文件是正常的。但是不适用大批量数据的导出。

使用insert overwrite的方式导出数据时发现结果文件乱码。

 

原因

排除了spark操作时都使用了utf-8编码影响外

在配置文件hive.exec.compress.output=true情况下,hive会对最终输出结果进行压缩。

压缩算法会使用配置mapred.output.compression.codec=org.apache.Hadoop.io.compress.SnappyCodec

所以输出的文件在使用cat查看会显示为乱码,需要解压缩文件后查看

snzip -d /path/XXX.snappy服务器本地使用

hadoop fs -text /path/XXX.snappy文件在hdfs中使用

或者在导出数据时配置关闭hive.exec.compress.output参数。

例:

spark-sql --hiveconf hive.exec.compress.output=false -e "INSERT OVERWRITE LOCAL DIRECTORY '/tmp/test' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' stored as textfile select * from test where abc=‘XXX’;”

 

snappy压缩算法能压缩文件到原来的50%-70%。关闭输出结果压缩的功能后会增大存储空间和网络传输的开销。

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0