spark-sql中文字符使用问题

所有涉及数据源显示都涉及原始数据的字符集编码和客户端语言环境的设置。

那么在spark-sql环境,只要正确的字符集编码和正确的客户端语言环境设置,显示,使用中文,完全不是困难。

#上传的文本文件编码,确认是utf8

[root@slave2 test]# cat city_test.txt
浙江,杭州,300
浙江,宁波,150
浙江,温州,200
浙江,嘉兴,100
江苏,南京,270
江苏,苏州,299
江苏,某市,200
江苏,某某市,100
[root@slave2 test]# file city_test.txt
city_test.txt: UTF-8 Unicode text

[root@slave2 test]# echo $LANG
en_US.UTF-8
[root@slave2 test]#

##############

[root@snn spark]# echo $LANG
en_US.UTF-8

[root@snn spark]# which spark-sql
/opt/hadoop/spark-latest/bin/spark-sql
[root@snn spark]# /opt/hadoop/spark-latest/bin/spark-sql
15/12/20 13:37:35 WARN MetricsSystem: Using default name DAGScheduler for source because spark.app.id is not set.
SET hive.support.sql11.reserved.keywords=false
15/12/20 13:38:56 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
SET spark.sql.hive.version=1.2.1
SET spark.sql.hive.version=1.2.1
spark-sql> show tables;
external_2000w  false
external_2000w_new      false
external_bz2_tbl_6005   false
external_tar_gz_tbl_6005        false
external_tbl_6005       false
hive_user_info  false
pcp     false
pcp2    false
pcp2_16787      false
sqoop_test      false
tbl_6005        false
test_table_16538        false
test_table_16539        false
Time taken: 3.543 seconds, Fetched 13 row(s)
spark-sql> select * from pcp2;
浙江    杭州    300
浙江    宁波    150
浙江    温州    200
浙江    嘉兴    100
江苏    南京    270
江苏    苏州    299
江苏    某市    200
江苏    某某市  100
Time taken: 17.689 seconds, Fetched 8 row(s)

spark-sql>

#########################################################

有时候需要转码,比如大量文件已经是GBK编码,那么iconv命令是可以转码的。

有时候发现转码后,file <文件名> 命令看到已经改了编码,下载到windows下看,也能看。

这就说明,文本编码已经好了,但是由于显示终端的字符设置不对,导致显示乱码,修改终端的字符显示即可。

为了测试,我把一个文件转成集中编码,设置不同的环境设置进行显示。

spark-sql中文字符使用问题_第1张图片

spark-sql中文字符使用问题_第2张图片




你可能感兴趣的:(spark,spark-sql)