hive表直接select * 可以查出结果,但是left join一下数据中的中文就变成问号

hive表直接select * 可以查出结果,但是left join一下数据中的中文就变成问号。好诡异啊

img

img

有朋友碰到过吗?

补充一下

同样的一个数据库,分区表之间关联就ok,但是只有left join一个不带分区的维表就不行,而且我为了测试也把这个维度表改成了带日期的分区表,关联还是乱码,求解

数据是 oracle 然后sqoop抽到hdfs上的,通过 load data inpath 导入的,事实表的话是多了一个中间表动态分区了一下,没有别的不同

问题已解决
https://blog.csdn.net/weixin_52863669/article/details/124815863

characterEncoding=UTF-8
编码改一下


<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://hadoop-3/hive?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=UTF-8</value>
</property>

要不看下同一个的id 对应的中文吧 ,有可能表里有正常的,也有乱码的

1.查询Oracle服务端字符集编码,获取 NLS_CHARACTERSET 字段值:

  SQL代码: SELECT * FROM v$nls_parameters;

  保存查询到的值:NLS_CHARACTERSET = AL32UTF8

2.查询Oracle服务端语言信息:

  SQL代码: SELECT 'AMERICAN_AMERICA.'|| PROPERTY_VALUE FROM DATABASE_PROPERTIES
  保存查询到的值: AMERICAN_AMERICA.AL32UTF8

3.设置本地环境变量:

  我的电脑 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量 -> 系统变量栏

img

4.重启PLSQL即可.

看一下Hive表的编码格式

你看看两个表的字段是不是设置了字符集,把字符集修改为同一类型。