gpt4 book ai didi

hadoop - 带有 SERDEPROPERTIES 的 Hive CREATE TABLE 语句抛出错误

转载 作者:可可西里 更新时间:2023-11-01 15:48:53 27 4
gpt4 key购买 nike

我正在进行从 HDP 到 AWS EMR 的迁移项目。作为这项工作的一部分,我们使用来自 HDP 的 CREATE TABLE 语句在 EMR Hive 中创建表,我们使用 show create table 命令获得该语句。一个这样的 CREATE TABLE DDL 如下:

CREATE TABLE test_table(column_list)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\n'
WITH SERDEPROPERTIES (
'serialization.encoding'='ISO-8859-1')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'hdfs://path/to/data'

作为流程的一部分,我们按如下方式运行修改后的语句:

CREATE TABLE test_table(column_list)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\n'
WITH SERDEPROPERTIES (
'serialization.encoding'='ISO-8859-1')
STORED AS TEXTFILE
LOCATION
's3://path/to/data'

当我们运行它时,它失败并出现以下错误:

Error: Error while compiling statement: FAILED: ParseException line 28:0 missing EOF at 'WITH' near ''org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'' (state=42000,code=40000)

在 StackOverflow 上查找,我们得到了这个 hive using serdeproperties gives error ,并查看了为该问题留下的评论。我们决定删除 WITH SERDEPROPERTIES 部分,然后再次运行它。这次它没有抛出任何错误。然后我们做了一个 ALTER TABLE test_table SET SERDEPROPERTIES('serialization.encoding'='ISO-8859-1'),它起作用了。奇怪的是,我们在 EMR 上做了一个 show create table 并得到了这个:

CREATE TABLE test_table(column_list)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
'field.delim'='|',
'line.delim'='\n',
'serialization.encoding'='ISO-8859-1',
'serialization.format'='|')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
's3://path/to/data'

可以看出,这和HDP展示给我们的有点不一样。从 HDP 获取脚本以在 EMR 上无缝运行的良好、微创方式是什么?另外,为什么会出现错误?任何见解将不胜感激。

最佳答案

请转义查询中的任何特殊字符。喜欢'|'作为“\|”

关于hadoop - 带有 SERDEPROPERTIES 的 Hive CREATE TABLE 语句抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53330373/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com