Hadoop 如何在蜂巢中存储特殊字符?
我一直在玩Spark、蜂巢和拼花地板,我的蜂巢表中有一些数据,下面是它的样子(前面有法语警告): 显然这里出了点问题 我所做的是:我使用spark将teradata表作为数据帧读取,将其存储为拼花文件,然后使用此文件将其存储到hive,下面是我的创建表脚本:Hadoop 如何在蜂巢中存储特殊字符?,hadoop,apache-spark,hive,parquet,Hadoop,Apache Spark,Hive,Parquet,我一直在玩Spark、蜂巢和拼花地板,我的蜂巢表中有一些数据,下面是它的样子(前面有法语警告): 显然这里出了点问题 我所做的是:我使用spark将teradata表作为数据帧读取,将其存储为拼花文件,然后使用此文件将其存储到hive,下面是我的创建表脚本: CREATE TABLE `table`( `lib` VARCHAR(255), `libelle_sous_cause` VARCHAR(255), ) STORED AS PARQUET LOCATION
CREATE TABLE `table`(
`lib` VARCHAR(255),
`libelle_sous_cause` VARCHAR(255),
)
STORED AS PARQUET
LOCATION
'hdfs://location';
我真的不知道是什么原因造成的,这可能是由Teradata>拼花地板或拼花地板>蜂巢之间的一些特殊编码引起的,我不确定
感谢您的帮助。从Teradata到Hadoop执行sqoop时,我遇到了同样的问题。从Teradata提取数据时,请在
选择
中尝试将可能存在此问题的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';
CREATE TABLE `table`(
`lib` STRING,
`libelle_sous_cause` STRING,
)
STORED AS PARQUET
LOCATION
'hdfs://location';