首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于ORC或RC格式的配置单元Json SerDE

用于ORC或RC格式的配置单元Json SerDE
EN

Stack Overflow用户
提问于 2017-04-05 09:54:06
回答 2查看 1.5K关注 0票数 2

可以使用带有RC或ORC文件格式的JSON serde吗?我正在尝试插入一个文件格式为ORC的Hive表,并将其存储在序列化JSON中的azure blob中。

EN

回答 2

Stack Overflow用户

发布于 2017-04-05 14:35:38

显然不是

代码语言:javascript
运行
复制
insert overwrite local directory '/home/cloudera/local/mytable' 
stored as orc 
select '{"mycol":123,"mystring","Hello"}'
;

create external table verify_data (rec string) 
stored as orc 
location 'file:////home/cloudera/local/mytable'
;

select * from verify_data
;

记录

{"mycol":123,"mystring","Hello"}

代码语言:javascript
运行
复制
create external table mytable (myint int,mystring string)
row format serde 'org.apache.hive.hcatalog.data.JsonSerDe' 
stored as orc
location 'file:///home/cloudera/local/mytable'
;

myint mystring

失败,出现异常java.io.IOException:java.lang.ClassCastException:

不能将org.apache.hadoop.hive.ql.io.orc.OrcStruct转换为org.apache.hadoop.io.Text

JsonSerDe.java

代码语言:javascript
运行
复制
...
import org.apache.hadoop.io.Text;
...

  @Override
  public Object deserialize(Writable blob) throws SerDeException {

    Text t = (Text) blob;
  ...
票数 1
EN

Stack Overflow用户

发布于 2018-01-16 07:46:51

您可以使用某种类型的转换步骤来完成此操作,例如在目标目录中生成ORC文件的分组表步骤,并在分组表之后挂载具有相同模式的hive表。如下所示。

代码语言:javascript
运行
复制
CREATE EXTERNAL TABLE my_fact_orc
(
  mycol STRING,
  mystring INT
)
PARTITIONED BY (dt string)
CLUSTERED BY (some_id) INTO 64 BUCKETS
STORED AS ORC
LOCATION 's3://dev/my_fact_orc'
TBLPROPERTIES ('orc.compress'='SNAPPY');

ALTER TABLE my_fact_orc ADD IF NOT EXISTS PARTITION (dt='2017-09-07') LOCATION 's3://dev/my_fact_orc/dt=2017-09-07';

ALTER TABLE my_fact_orc PARTITION (dt='2017-09-07') SET FILEFORMAT ORC;

SELECT * FROM my_fact_orc WHERE dt='2017-09-07' LIMIT 5;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43220529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档