排查Hive报错:org.apache.hadoop.hive.serde2.SerDeException: java.io.IOException: Start of Array expected

CREATE TABLE json_nested_test (
    count string,
    usage string,
    pkg map<string,string>,
    languages array<string>,
    store map<string,array<map<string,string>>>)
ROW FORMAT SERDE ‘org.apache.hive.hcatalog.data.JsonSerDe‘
STORED AS TEXTFILE;

以上述sql创建表json_nested_test后,查询时发现报错:Failed with exception java.io.IOException:org.apache.hadoop.hive.serde2.SerDeException: java.io.IOException: Start of Array expected

于是进行如下测试,发现是org.apache.hive.hcatalog.data.JsonSerDe 对复杂类型支持不足造成,例如map<string,array<string>>,这个例子中就是不支持array作为map的value.

CREATE TABLE json_nested_test_openx (
    count string,
    usage string,
    pkg map<string,string>,
    languages array<string>,
    store map<string,array<map<string,string>>>)
ROW FORMAT SERDE ‘org.openx.data.jsonserde.JsonSerDe‘
STORED AS TEXTFILE;

CREATE TABLE s1 (
    count string,
    usage string
)
ROW FORMAT SERDE ‘org.apache.hive.hcatalog.data.JsonSerDe‘
STORED AS TEXTFILE;
load data local inpath ‘/home/work/s1.txt‘ overwrite into table s1;
select * from s1;
CREATE TABLE s2 (
    count string,
    usage string,
    pkg map<string,string>
)
ROW FORMAT SERDE ‘org.apache.hive.hcatalog.data.JsonSerDe‘
STORED AS TEXTFILE;
load data local inpath ‘/home/work/s2.txt‘ overwrite into table s2;
select * from s2;

CREATE TABLE s3 (
    count string,
    usage string,
    pkg map<string,string>,
    languages array<string>
)
ROW FORMAT SERDE ‘org.apache.hive.hcatalog.data.JsonSerDe‘
STORED AS TEXTFILE;
load data local inpath ‘/home/work/s3.txt‘ overwrite into table s3;
select * from s3;
CREATE TABLE s4 (
    count string,
    usage string,
    pkg map<string,string>,
    languages array<string>,
    store map<string,array<map<string,string>>>
)
ROW FORMAT SERDE ‘org.apache.hive.hcatalog.data.JsonSerDe‘
STORED AS TEXTFILE;
load data local inpath ‘/home/work/s4.txt‘ overwrite into table s4;
select * from s4;

CREATE TABLE s5 (
    store map<string,array<map<string,string>>>
)
ROW FORMAT SERDE ‘org.apache.hive.hcatalog.data.JsonSerDe‘
STORED AS TEXTFILE;
load data local inpath ‘/home/work/s5.txt‘ overwrite into table s5;
select * from s5;

CREATE TABLE s6 (
    store map<string,array<string>>
)
ROW FORMAT SERDE ‘org.apache.hive.hcatalog.data.JsonSerDe‘
STORED AS TEXTFILE;
load data local inpath ‘/home/work/s6.txt‘ overwrite into table s6;
select * from s6;

这个Serde hive自带,路径为$HIVE_HOME/hcatalog/share/hcatalog/hive-hcatalog-core-1.2.1.jar,它也存在其它问题:不支持数据文件中的空行

时间: 2024-08-26 17:54:37

排查Hive报错:org.apache.hadoop.hive.serde2.SerDeException: java.io.IOException: Start of Array expected的相关文章

Intellij IDEA报错:Could not save application settings: java.io.IOException: java.lang.AssertionError: Unexpected content storage modificat

Question: i have a message saying "Could not save application settings: java.io.IOException: java.lang.AssertionError: Unexpected content storage modification" when running the apps. Anybody have an idea how to fix this? Answer: I ran into this

用java运行Hadoop程序报错:org.apache.hadoop.fs.LocalFileSystem cannot be cast to org.apache.

用java运行Hadoop例程报错:org.apache.hadoop.fs.LocalFileSystem cannot be cast to org.apache.所写代码如下: package com.pcitc.hadoop; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.h

mavne install 报错org.apache.maven.surefire.util.SurefireReflectionException: java.lang.reflect.InvocationTargetException

maven install 报错 org.apache.maven.surefire.util.SurefireReflectionException: java.lang.reflect.InvocationTargetException; nested exception is java.lang.reflect.InvocationTargetException: nulljava.lang.reflect.InvocationTargetException at sun.reflect.

报错org.apache.catalina.LifecycleException caused by java.lang.NoSuchMethodError: javax.servlet.ServletContext.getClassLoader()Ljava/lang/ClassLoader

今天将tomcat6更换成了tomcat7,报错的内容 严重: A child container failed during startjava.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/webandr

hbase报错org.apache.hadoop.ipc.RemoteException(java.lang.NullPointerException): java.lang.NullPointerException

这个错误找了好长时间,日志看半天,找度娘没什么用,再看stackoverflow,上面有几篇相关的帖子,但是没人回答. 看半天,没有cause,只好到idea中去看sortLocalSorts源码,结果才知道是dns解析相关的配置,查了几个主机上的hbase-site.xml没问题,HA配置也没问题,最后才知道是s201机架感知忘了配,就是这个:net.topology.node.switch.mapping.impl 具体怎么配置机架感知自己去搜博客哈,本人前几篇有关于机架感知的博客,怎么配置

eclipse连接远程Hadoop报错,Caused by: java.io.IOException: 远程主机强迫关闭了一个现有的连接。

eclipse连接远程Hadoop报错,Caused by: java.io.IOException: 远程主机强迫关闭了一个现有的连接.全部报错信息如下: Exception in thread "main" java.io.IOException: Call to hadoopmaster/192.168.1.180:9000 failed on local exception: java.io.IOException: 远程主机强迫关闭了一个现有的连接. at org.apach

解决hiveserver2报错:java.io.IOException: Job status not available - Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

用户使用的sql: select count( distinct patient_id ) from argus.table_aa000612_641cd8ce_ceff_4ea0_9b27_0a3a743f0fe3; 下面做不同的测试: 1.beeline -u jdbc:hive2://0.0.0.0:10000 -e "select count( distinct patient_id ) from argus.table_aa000612_641cd8ce_ceff_4ea0_9b27_

sqoop1.4.5 导入 hive IOException running import job: java.io.IOException: Hive exited with status 1

sqoop 导入 hive hive.HiveImport: Exception in thread "main" java.lang.NoSuchMethodError: org.apache.thrift.EncodingUtils.setBit(BIZ)B ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Hive exited with status 1

hive 报错 java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient

Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:344) at org.a