如何在 Hive 中存储特殊字符?

How to store special characters in Hive?

我一直在玩弄 Spark、Hive 和 Parquet,我的 Hive 中有一些数据 table 下面是它的样子(前面警告法语):

Bloqu� � l'arriv�e      NULL
Probl�me de connexion   Bloqu� en hub

显然这里有问题。

我所做的是:我将 teradata table 读取为带有 spark 的数据框,将其存储为镶木地板文件,然后使用该文件将其存储到配置单元,这是我的创建 table 脚本:

CREATE TABLE `table`(
   `lib` VARCHAR(255),
   `libelle_sous_cause` VARCHAR(255),
   )
 STORED AS PARQUET
 LOCATION
   'hdfs://location';

我真的不知道是什么原因造成的,这可能是由 Teradata > parquet 或 Parquet > Hive 之间的某种特殊编码引起的,我不确定。

如有任何帮助,我们将不胜感激。

我在执行从 Teradata 到 Hadoop 的 sqoop 时遇到了同样的问题 运行。从 Teradata 中提取时,在 SELECT 中,请尝试使用以下行包装可能有此问题的 varchar 列:

SELECT
NAME,
AGE,
TRIM(CAST(TRANSLATE(COLUMNOFINTEREST USING latin_to_unicode WITH ERROR) AS VARCHAR(50)))
FROM
TABLENAME;

COLUMNOFINTEREST 是您的列,其中包含特殊字符。

如果可行,请告诉我。

我想通了,解决方案是简单地使用 STRING 而不是 VARCHAR

CREATE TABLE `table`(
   `lib` STRING,
   `libelle_sous_cause` STRING,
   )
 STORED AS PARQUET
 LOCATION
   'hdfs://location';