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

时间:2016-01-27 14:32:43

标签: hadoop apache-spark hive parquet

我一直在玩Spark,Hive和Parquet,我的Hive表中有一些数据,这就是它的样子(提前警告法语):

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

显然这里有问题。

我所做的是:我将teradata表作为带有spark的数据框读取,我将其存储为镶木地板文件,然后我使用此文件将其存储到hive,这是我的创建表脚本:

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

我真的不知道是什么原因引起的,这可能是由Teradata>之间的一些特殊编码引起的。镶木地板或镶木地板> Hive,我不确定。

任何帮助将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:1)

我认为,解决方法是简单地使用STRING代替VARCHAR

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

答案 1 :(得分:0)

从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是您的专栏中的特殊字符。

如果有效,请告诉我。