如何在 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';
我一直在玩弄 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';