hive表直接select * 可以查出结果,但是left join一下数据中的中文就变成问号。好诡异啊
有朋友碰到过吗?
补充一下
同样的一个数据库,分区表之间关联就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&useUnicode=true&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.设置本地环境变量:
我的电脑 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量 -> 系统变量栏
4.重启PLSQL即可.
看一下Hive表的编码格式
你看看两个表的字段是不是设置了字符集,把字符集修改为同一类型。