- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在进行从 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/
我正在进行从 HDP 到 AWS EMR 的迁移项目。作为这项工作的一部分,我们使用来自 HDP 的 CREATE TABLE 语句在 EMR Hive 中创建表,我们使用 show create t
当我创建一个包含以 JSON 格式存储的数据的配置单元表时,我使用了 org.apache.hive.hcatalog.data.JsonSerDe,其中一个 SERDEPROPERTIES 是 's
如果有人可以提供对本条款的引用,将不胜感激。我一直在网上搜索,运气不佳。 最佳答案 它什么都不做。 serde 的代码中没有任何内容读取 path属性(property)——据我所知,从来没有。这可能
我是一名优秀的程序员,十分优秀!