我正在尝试将日志数据解析为 hive 中的 parquet 文件格式,使用的分隔符是“||-||”。 样本行是 “b8905bfc-dc34-463e-a6ac-879e50c2e630||-||syntrans1||-||CitBook”
执行数据暂存后我能够得到结果
“b8905bfc-dc34-463e-a6ac-879e50c2e630 syntrans1 CitBook”。
将数据转换为 parquet 文件格式时出现错误: `
Caused by: java.lang.ClassNotFoundException: Class org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2185)
at org.apache.hadoop.hive.ql.plan.PartitionDesc.getDeserializer(PartitionDesc.java:137)
at org.apache.hadoop.hive.ql.exec.MapOperator.getConvertedOI(MapOperator.java:297)
... 24 more
这是我试过的
create table log (a String ,b String ,c String)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe'
WITH SERDEPROPERTIES (
"field.delim"="||-||",
"collection.delim"="-",
"mapkey.delim"="@"
);
create table log_par(
a String ,
b String ,
c String
) stored as PARQUET ;
insert into logspar select * from log_par ;
`
最佳答案
阿曼库玛
要解决此问题,请在添加以下 jar 后运行配置单元查询:
hive> add jar hive-contrib.jar;
要永久添加 jar,请执行以下操作:
1.在 Hive Server 主机上,创建/usr/hdp//hive/auxlib 目录。
2.将/usr/hdp//hive/lib/hive-contrib-.jar复制到/usr/hdp//hive/auxlib。
3.重启HS2服务器
请检查进一步引用。
如果你遇到任何问题,请告诉我
关于hadoop - 无法将数据加载为 parquet 文件格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48679163/