我正在从配置单元表/视图中选择数据,但是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?
2条答案
按热度按时间a0zr77ik1#
为了以正确的编码读取linux中的数据,在登录linux之后,在我的配置文件中,我使用以下变量设置了字符类型:
如果它破坏了你的档案,就重新载入档案
. .bash_profile
如果只是个人资料那么. .profile
km0tfn4u2#
这不是配置单元问题,而是文件系统或文件编码问题。在配置单元中选择*除了从文件系统读取文件外,实际上什么都不做。因此,如果在底层文件上运行hadoop fs cat,应该会看到相同的行为。