从hive使用utf-8字符编码选择数据

lawou6xi  于 2021-05-31  发布在  Hadoop
关注(0)|答案(2)|浏览(804)

我正在从配置单元表/视图中选择数据,但是spark shell或beeline没有提取字符编码,但是如果我正在从ambari(直接通过配置单元)中选择相同的数据,但是由于安全原因,从命令行中选择的配置单元已被禁用。请参见以下数据:

Ambari Data:

•Construction Maintenance 
• 524 N. Martin Luther King Jr.
‘SS-MN-BAE – Other’
¿NPM¿ GOVT/GS SCD US ARM
¿MCCRAY,LORENZO

beeline data:
?Construction Mai...
? 524 N. Martin L...
?SS-MN-BAE ? Other?
?NPM? GOVT/GS SCD...
?MCCRAY,LORENZO

Spark-shell Data:
?Construction Mai...
? 524 N. Martin L...
?SS-MN-BAE ? Other?
?NPM? GOVT/GS SCD...
?MCCRAY,LORENZO
using spark shell I did
 sql("select * from test.ACCOUNT order by customer_name desc").show()

Same select is issued in beeline and ambari.

如果有人知道我做错了什么,或者我需要设置任何参数来读取正确的字符集,请让我知道我在sparkshell中尝试了javanio字符集,但是没有成功。请引导我,hadoop新手。在选择数据之前,有没有办法通过命令行将字符集传递给beeline或sparkshell?

a0zr77ik

a0zr77ik1#

为了以正确的编码读取linux中的数据,在登录linux之后,在我的配置文件中,我使用以下变量设置了字符类型:

export LANG="pt_PT.utf8"
export LC_ALL="pt_PT.utf8"

如果它破坏了你的档案,就重新载入档案 . .bash_profile 如果只是个人资料那么 . .profile

km0tfn4u

km0tfn4u2#

这不是配置单元问题,而是文件系统或文件编码问题。在配置单元中选择*除了从文件系统读取文件外,实际上什么都不做。因此,如果在底层文件上运行hadoop fs cat,应该会看到相同的行为。

相关问题